当前位置:首页 > 代码 > 正文

图像处理算法源代码(数字图像处理程序源代码)

admin 发布:2022-12-19 16:43 153


本篇文章给大家谈谈图像处理算法源代码,以及数字图像处理程序源代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

求算法,源代码!!!用Matlab编一个图像的非均匀量化程序。

直方图均衡化也是非线性量化的一种吧,网上找到的,作者写的非常详细。

% 数字图像处理程序作业

% 本程序能将JPG格式的彩色图像文件灰度化并进行直方图均衡

%

% 输入文件:PicSample.jpg 待处理图像

% 输出文件:PicSampleGray.bmp 灰度化后图像

% PicEqual.bmp 均衡化后图像

%

% 输出图形窗口说明

% figure NO 1 待处理彩色图像

% figure NO 2 灰度化后图像

% figure NO 3 直方图

% figure NO 4 均衡化后直方图

% figure NO 5 灰度变化曲线

% figure NO 6 均衡化后图像

% 1, 处理的图片名字要为 PicSample.jpg

% 2, 程序每次运行时会先清空workspace

% 作者;archiless lorder

clear all

%一,图像的预处理,读入彩色图像将其灰度化

PS=imread('PicSample.jpg'); %读入JPG彩色图像文件

imshow(PS) %显示出来 figure NO 1

title('输入的彩色JPG图像')

imwrite(rgb2gray(PS),'PicSampleGray.bmp'); %将彩色图片灰度化并保存

PS=rgb2gray(PS); %灰度化后的数据存入数组

figure,imshow(PS) %显示灰度化后的图像,也是均衡化前的样品 figure NO 2

title('灰度化后的图像')

%二,绘制直方图

[m,n]=size(PS); %测量图像尺寸参数

GP=zeros(1,256); %预创建存放灰度出现概率的向量

for k=0:255

GP(k+1)=length(find(PS==k))/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置

end

figure,bar(0:255,GP,'g') %绘制直方图 figure NO 3

title('原图像直方图')

xlabel('灰度值')

ylabel('出现概率')

%三,直方图均衡化

S1=zeros(1,256);

for i=1:256

for j=1:i

S1(i)=GP(j)+S1(i); %计算Sk

end

end

S2=round(S1*256); %将Sk归到相近级的灰度

for i=1:256

GPeq(i)=sum(GP(find(S2==i))); %计算现有每个灰度级出现的概率

end

figure,bar(0:255,GPeq,'b') %显示均衡化后的直方图 figure NO 4

title('均衡化后的直方图')

xlabel('灰度值')

ylabel('出现概率')

figure,plot(0:255,S2,'r') %显示灰度变化曲线 figure NO 5

legend('灰度变化曲线')

xlabel('原图像灰度级')

ylabel('均衡化后灰度级')

%四,图像均衡化

PA=PS;

for i=0:255

PA(find(PS==i))=S2(i+1); %将各个像素归一化后的灰度值赋给这个像素

end

figure,imshow(PA) %显示均衡化后的图像 figure NO 6

title('均衡化后图像')

imwrite(PA,'PicEqual.bmp');

如何将这段图像处理算法转化为matlaB代码?

函数代码

function result = smoothedfilter(img)

    result = img;

    [m n] = size(img);

    for i=3:m-2

        for j=3:n-2

            v1 = [reshape(img(i-2:i-1,j-1:j+1),1,6) img(i,j)];

            v2 = [reshape(img(i-1:i+1,j+1:j+2),1,6) img(i,j)];

            v3 = [reshape(img(i+1:i+2,j-1:j+1),1,6) img(i,j)];

            v4 = [reshape(img(i-1:i+1,j-2:j-1),1,6) img(i,j)];

            v5 = [reshape(img(i-2:i-1,j-2:j-1),1,4) img(i-1,j) img(i,j-1) img(i,j)];

            v6 = [reshape(img(i-2:i-1,j+1:j+2),1,4) img(i-1,j) img(i,j+1) img(i,j)];

            v7 = [reshape(img(i+1:i+2,j+1:j+2),1,4) img(i+1,j) img(i,j+1) img(i,j)];

            v8 = [reshape(img(i+1:i+2,j-2:j-1),1,4) img(i+1,j) img(i,j-1) img(i,j)];

            v9 = reshape(img(i-1:i+1,j-1:j+1),1,9);

            V = {v1 v2 v3 v4 v5 v6 v7 v8 v9};

            st = zeros(1,9);

            me = zeros(1,9);

            for k=1:9

                st(k) = std(double(V{k}));

                me(k) = mean(V{k});

            end

            [~, k] = min(st);

            result(i,j) = uint8(me(k));

        end

    end

end

测试代码

org = imread('37_3.bmp');

result = smoothedfilter(org);

subplot(2,2,1);imshow(org);title('原图');

subplot(2,2,2);imshow(result);title('平滑过滤之后');

h=ones(3,3)./9;

y = filter2(h,org);

y = uint8(y);

subplot(2,2,3);imshow(y);title('filter2中值过滤之后');

y = imfilter(org,h);

subplot(2,2,4);imshow(y);title('imfilter中值过滤之后');

数字图像处理clean算法的MATLAB代码

图像去噪是数字图像处理中的重要环节和步骤。去噪效果的好坏直接影响到后续的图像处理工作如图像分割、边缘检测等。图像信号在产生、传输过程中都可能会受到噪声的污染,一般数字图像系统中的常见噪声主要有:高斯噪声(主要由阻性元器件内部产生)、椒盐噪声(主要是图像切割引起的黑图像上的白点噪声或光电转换过程中产生的泊松噪声)等; 

目前比较经典的图像去噪算法主要有以下三种: 

均值滤波算法:也称线性滤波,主要思想为邻域平均法,即用几个像素灰度的平均值来代替每个像素的灰度。有效抑制加性噪声,但容易引起图像模糊,可以对其进行改进,主要避开对景物边缘的平滑处理。 

中值滤波:基于排序统计理论的一种能有效抑制噪声的非线性平滑滤波信号处理技术。中值滤波的特点即是首先确定一个以某个像素为中心点的邻域,一般为方形邻域,也可以为圆形、十字形等等,然后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值,这里领域被称为窗口,当窗口移动时,利用中值滤波可以对图像进行平滑处理。其算法简单,时间复杂度低,但其对点、线和尖顶多的图像不宜采用中值滤波。很容易自适应化。 Wiener维纳滤波:使原始图像和其恢复图像之间的均方误差最小的复原方法,是一种自适应滤波器,根据局部方差来调整滤波器效果。对于去除高斯噪声效果明显。 

实验一:均值滤波对高斯噪声的效果 

I=imread('C:\Documents and Settings\Administrator\桌面\1.gif');%读取图像

图像处理算法源代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于数字图像处理程序源代码、图像处理算法源代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/13697.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载