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

图像处理算法源代码(图像处理算法基础)

admin 发布:2022-12-19 18:00 190


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

本文目录一览:

去哪找图像处理经典算法的代码matlab

有一本专门介绍matlab图像处理的书,很厚,原价大概80多,你可以去书店看看。

如果你英文好的话,去官网下相关pdf文档就行,很多中文书籍都是根据这个写的,有些干脆就是翻译一下

求教单值图像处理算法

将A中奇数位的像素点取代图片B中相应位置的点,B中其他点不变。将A中偶数位的像素点取代图片C中相应位置的点,C中其他点不变。还原的时候只要挑出B中的奇数位和C中的偶数位。类似的方法:按行,按列,分块,只要将A分成2部分,最后合起来。

再给你出个主意。B图像不变。C图像的点作为标记。A中的像素与B中相应位置点颜色一致的,在C中用黑色标记,不一样的用白色标记。还原也很方便,对照C修改B就得到A。推广用1副图隐藏A,同理,但是不用B来做原图了,自己写个片段:白黑白白黑白黑黑白黑,我只是举个例子。让这个片段无限循环下去,就是B图片的作用了。

求算法,源代码!!!用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');

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

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

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

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

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

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

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

如何将这段图像处理算法转化为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中值过滤之后');

数字图像处理 图像缩放以及旋转的算法代码

clear all;

I = imread('lena.bmp');

figure; imshow(I);title('原图像');

[m,n]=size(I);

%%% 缩小 临近法

M = 0.5;    %放大倍数

%新的图像大小

m1=m*M;n1=n*M;

%****************************************************

for i=1:m1

    for j=1:n1;

        J(i,j)=I(round(i/M),round(j/M));

    end

end

%*****************************************************

figure; imshow(J);title('缩小图像');

%%% 放大 双线性插值法

I2 = double(I);

N = 1.5;    %放大倍数

%新的图像大小

m2=m*N;n2=n*N;

J2=zeros(m2,n2);

for i=1:m2

  for j=1:n2

    x=i/N;

    y=j/N;

    u=floor(x);

    v=floor(y);

    a=x-u;

    b=y-v;

    if u+2=m  v+2=n

        J2(i,j)=I2(u+1,v+1)*(1-a)*(1-b)+I2(u+2,v+1)*a*(1-b)+I2(u+1,v+2)*(1-a)*b+I2(u+2,v+2)*a*b;

    end

  end

end

J2 = uint8(J2);

figure;imshow(J2);title('放大图像');

%%%%% 旋转 

R = 45*pi/180;   %旋转角度

I = double(I);

%新图像大小

m2 = ceil(m*cos(R)+n*sin(R));

n2 = ceil(m*sin(R)+n*cos(R));

u0= m*sin(R);%平移量

%变换矩阵   

T=[cos(R),sin(R);-sin(R),cos(R)];

L = zeros(m2,n2);

for u=1:n2

  for v=1:m2

    %新图像坐标变换到原图像坐标x和y中

    temp = T*([u;v]-[u0;0]);

    x= temp(1);

    y= temp(2);

    if x=1  x=m  y=1  y=n    %若变换出的x和y在原图像范围内

        x_low=floor(x);

        x_up=ceil(x);

        y_low=floor(y);

        y_up=ceil(y);

        

        %双线性插值,p1到p4是(x,y)周围的四个点          

        p1=I(x_low,y_low);

        p2=I(x_up,y_low);

        p3=I(x_low,y_low);

        p4=I(x_up,y_up);

        s=x-x_low;

        t=y-y_low;

        L(u,v)=(1-s)*(1-t)*p1+(1-s)*t*p3+(1-t)*s*p2+s*t*p4;

    end

  end

end

L=uint8(L);

figure;imshow(L);

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

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

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


取消回复欢迎 发表评论:

分享到

温馨提示

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

联系我们反馈

立即下载