数字图像处理 MATLAB上机作业(DOC)

合集下载

数字图像处理MATLAB作业(3)

数字图像处理MATLAB作业(3)

3.1I=imread('bmp.bmp'); %把一个BMP灰度图像读入到变量I中I1=im2double(I); %图像灰度值的双精度化figure,imhist(I1); %打开一个新图形窗口来显示直方图I2=imadjust(I1,[0 0.3],[0 1]); %把图像的灰度范围从[0,0.3]拉伸到[0,1] figure,imshow(I2); %打开一个新图形窗口显示增强后的图像figure,imhist(I2); %打开一个新图形窗口显示增强后的直方图3.2I=imread('lf.bmp'); imshow(I);%读入并显示一幅BMP频谱图像I1=double(I);%双精度化I2=log(I1+1);%对数变换I3=mat2gray(I2);%把图像的灰度范围变换为[0 1]范围figure,imshow(I3); %打开一个新的图形窗口显示减少动态范围后的频谱图像3.4I=imread('fj.bmp'); I=rgb2gray(I);imshow(I);title('原始图像');%读入并显示一幅灰度图像figure,imhist(I);title('原始直方图');%打开一个新的图形窗口显示原始图像的直方图[I1,T]=histeq(I);%直方图均衡化figure,imshow(I1);title('均衡化后'); %打开一个新的图形窗口显示均衡化后的图像figure,imhist(I1);title('均衡化后直方图');%打开一个新的图形窗口显示均衡化后的直方图figure,plot((0:255)/255,T);title('变换曲线');%打开一个新的图形窗口画出变换曲线3.6I=imread('fj.bmp'); I=rgb2gray(I);imshow(I);title('原始图像');%读入并显示一幅灰度图像figure,imhist(I);title('原始直方图');%打开一个新的图形窗口显示原始图像的直方图[I1,T]=histeq(I);%直方图均衡化figure,imshow(I1);title('均衡化后'); %打开一个新的图形窗口显示均衡化后的图像figure,imhist(I1);title('均衡化后直方图');%打开一个新的图形窗口显示均衡化后的直方图figure,plot((0:255)/255,T);title('变换曲线');%打开一个新的图形窗口画出变换曲线3.7clc;clear all;I=imread('hua.bmp');imshow(I),title('hua.bmp'); %把一个图形窗口划分为1×2矩形显示区域,在图形窗口的左侧区域显示图像II1=double(I);%数据类型转换,不支持无符号整型计算[M,N]=size(I1);%计算图像的高和宽%产生高斯型高通滤波器m=round(M/2);n=round(N/2);%四舍五入取整hh=1.035;hl=0.7;c=3;for i=1:Mfor j=1:Nd(i,j)=sqrt((i-m)^2+(j-n)^2);endendd0=median(median(d));for i=1:Mfor j=1:Nh(i,j)=(hh-hl)*(1-exp(-c*(d(i,j)/d0)))+hl;%高通滤波器endend[i,j]=meshgrid(1:M,1:N);figure,mesh(h); title('highpass filter');%同态滤波h=h';I2=log(I1+1);%对数变换I3=fft2(I2);%傅立叶变换I3=fftshift(I3);%频谱中心化I3=reshape(I3,384,1152);I4=I3.*(h);%滤波I4=reshape(I4,384,384,3);I4=ifftshift(I4); %频谱反中心化I4=ifft2(I4);%傅立叶反变换I5=exp(I4-1);%指数变换I6=real(I5);%取幅值I7=mat2gray(I6);%恢复变换后的数值范围figure,imshow(I7);title('adjusted image intensity value');%在图形窗口的右侧区域显示结果图像3.8I=imread('lf.bmp');I=rgb2gray(I);imshow(I);%读入和显示一幅原始图像title('original image') %给图像加标题X=grayslice(I,16);%将灰度范围分成16层% X=grayslice (I,n)用阈值1/n, 2/n, ..., (n-1)/n 阈值化灰度图像I ,并返回索引图像X。

数字图像处理上机作业五-12页word资料

数字图像处理上机作业五-12页word资料

数字图像第四讲作业1.设计一个程序对受到高斯白噪声及椒盐噪声干扰的图像进行3x3,5x5邻域的平均平滑以及中值滤波. (添加噪声参看imnoise函数, 空域卷积可用imfilter2函数实现)。

分析:1.邻域平均平滑可以采用imfilter函数,选择正确的卷积核就可以进行相应的邻域平均平滑操作了。

3x3的卷积核为:H1=1/8*[1 1 11 0 11 1 1];5x5的卷积核为:H2=1/24*[1 1 1 1 11 1 1 1 11 1 0 1 11 1 1 1 11 1 1 1 1 ];2.中值平滑可以先编写中值平滑子函数zhongzhi(),然后在主函数中调用即可。

以3*3中值平滑为例来分析其操作过程,3*3中值平滑就是将以各项素为中心的9个像素值的中间值作为平滑后的新的像素值赋给该像素。

因此可以通过I(i-1:i+1,j-1:j+1)得到对应于I(i,j)点的九个像素值,然后在由median函数可求出这九个值的中值,赋给新矩阵的(i,j)点即可。

注意I(i-1:i+1,j-1:j+1)操作可能会有i-1=0,j-1=0或i+1、j+1大于矩阵最大行列数的情况,从而出现错误。

在这里我的处理是在I矩阵的外围补上一圈0,即出现上述情况时像素值以0来代替。

具体代码为:I0=zeros(m+2,n+2);for i=2:m+1for j=2:n+1I0(i,j)=I(i-1,j-1);endend同理,5*5的中值平滑也可以同样操作,只不过是在外围补上两圈零而已。

代码及注释如下:主函数:clearI = imread('Lenna.bmp');J=imnoise(I,'gaussian');K=imnoise(I,'salt & pepper');%H1为3*3邻域平滑的卷积核,H2为5*5邻域平滑的卷积核H1=1/8*[1 1 11 0 11 1 1];H2=1/24*[1 1 1 1 11 1 1 1 11 1 0 1 11 1 1 1 11 1 1 1 1 ];J1=imfilter(J,H1); %高斯白噪声的3*3邻域平滑J2=imfilter(J,H2); %高斯白噪声的5*5邻域平滑K1=imfilter(K,H1); %椒盐噪声的3*3邻域平滑K2=imfilter(K,H2); %椒盐噪声的5*5邻域平滑J3=zhongzhi(J,3); %高斯白噪声的3*3中值平滑J4=zhongzhi(J,5); %高斯白噪声的5*5中值平滑K3=zhongzhi(K,3); %椒盐噪声的3*3中值平滑K4=zhongzhi(K,5); %椒盐噪声的5*5中值平滑subplot(131);imshow(J);title('高斯白噪声');subplot(132);imshow(J1);title('高斯白噪声的3*3邻域平滑');subplot(133);imshow(J2);title('高斯白噪声的5*5邻域平滑'); figuresubplot(131);imshow(J);title('高斯白噪声');subplot(132);imshow(J3);title('高斯白噪声的3*3中值平滑'); subplot(133);imshow(J4);title('高斯白噪声的5*5中值平滑'); figuresubplot(131);imshow(K);title('椒盐噪声');subplot(132);imshow(K1);title('椒盐噪声的3*3邻域平滑'); subplot(133);imshow(K2);title('椒盐噪声的5*5邻域平滑'); figuresubplot(131);imshow(K);title('椒盐噪声');subplot(132);imshow(K3);title('椒盐噪声的3*3中值平滑'); subplot(133);imshow(K4);title('椒盐噪声的5*5中值平滑');中值平滑子函数zhongzhi()如下:function J=zhongzhi(I,k)[m,n]=size(I);if k==3 %3*3的中值平滑I0=zeros(m+2,n+2);for i=2:m+1for j=2:n+1I0(i,j)=I(i-1,j-1); %将到操作的图像矩阵I外围不上0 endfor i=2:m+1for j=2:n+1a=I0(i-1:i+1,j-1:j+1);b=a(1:9); %将3*3的矩阵化成1*9的矩阵,便于median操作J(i-1,j-1)=median(b); %取中值,保存为平滑后矩阵J的i-1行、j-1列endendelse k==5 %5*5的中值平滑I0=zeros(m+4,n+4);for i=3:m+2for j=3:n+2I0(i,j)=I(i-2,j-2);endendfor i=3:m+2for j=3:n+2a=I0(i-2:i+2,j-2:j+2);b=a(1:25);J(i-2,j-2)=median(b);endendJ=uint8(J);运行结果如下:1)加高斯白噪声后图像,及3*3、5*5邻域平滑2)加高斯白噪声后图像,及3*3、5*5中值滤波3)加椒盐噪声后图像,及3*3、5*5邻域平滑4)加椒盐噪声后图像,及3*3、5*5中值平滑结论:平滑滤波和中值滤波对噪声都有一定的抑制作用,且阶数越高滤波效果越好,中值滤波对椒盐噪声的抑制效果特别明显,中值滤波效果比平滑滤波好一些,轮廓比较清晰。

(完整版)数字图像处理MATLAB程序【完整版】

(完整版)数字图像处理MATLAB程序【完整版】

第一部分数字图像处理实验一图像的点运算实验1.1 直方图一.实验目的1.熟悉matlab图像处理工具箱及直方图函数的使用;2.理解和掌握直方图原理和方法;二.实验设备1.PC机一台;2.软件matlab。

三.程序设计在matlab环境中,程序首先读取图像,然后调用直方图函数,设置相关参数,再输出处理后的图像。

I=imread('cameraman.tif');%读取图像subplot(1,2,1),imshow(I) %输出图像title('原始图像') %在原始图像中加标题subplot(1,2,2),imhist(I) %输出原图直方图title('原始图像直方图') %在原图直方图上加标题四.实验步骤1. 启动matlab双击桌面matlab图标启动matlab环境;2. 在matlab命令窗口中输入相应程序。

书写程序时,首先读取图像,一般调用matlab自带的图像,如:cameraman图像;再调用相应的直方图函数,设置参数;最后输出处理后的图像;3.浏览源程序并理解含义;4.运行,观察显示结果;5.结束运行,退出;五.实验结果观察图像matlab环境下的直方图分布。

(a)原始图像 (b)原始图像直方图六.实验报告要求1、给出实验原理过程及实现代码;2、输入一幅灰度图像,给出其灰度直方图结果,并进行灰度直方图分布原理分析。

实验1.2 灰度均衡一.实验目的1.熟悉matlab图像处理工具箱中灰度均衡函数的使用;2.理解和掌握灰度均衡原理和实现方法;二.实验设备1.PC机一台;2.软件matlab;三.程序设计在matlab环境中,程序首先读取图像,然后调用灰度均衡函数,设置相关参数,再输出处理后的图像。

I=imread('cameraman.tif');%读取图像subplot(2,2,1),imshow(I) %输出图像title('原始图像') %在原始图像中加标题subplot(2,2,3),imhist(I) %输出原图直方图title('原始图像直方图') %在原图直方图上加标题a=histeq(I,256); %直方图均衡化,灰度级为256subplot(2,2,2),imshow(a) %输出均衡化后图像title('均衡化后图像') %在均衡化后图像中加标题subplot(2,2,4),imhist(a) %输出均衡化后直方图title('均衡化后图像直方图') %在均衡化后直方图上加标题四.实验步骤1. 启动matlab双击桌面matlab图标启动matlab环境;2. 在matlab命令窗口中输入相应程序。

数字图像处理大作业(DOC)

数字图像处理大作业(DOC)

大作业指导书题目:数字图像处理院(系):物联网工程学院专业: 计算机班级:计算机1401-1406指导老师:学号:姓名:设计时间: 2016-2017学年 1学期摘要 (3)一、简介 (3)二、斑点数据模型.参数估计与解释 (4)三、水平集框架 (5)1.能量泛函映射 (5)2.水平集传播模型 (6)3.随机评估方法 (7)四、实验结果 (8)五、总结 (11)基于水平集方法和G0模型的SAR图像分割Abstract(摘要)这篇文章提出了一种分割SAR图像的方法,探索利用SAR数据中的统计特性将图像分区域。

我们假设为SAR图像分割分配参数,并与水平集模型相结合。

分布属于G分布中的一种,处于数据建模的目的,它们已经成功的被用于振幅SAR图像中不同区域的建模。

这种统计数据模型是驱动能量泛函执行区域映射的基础,被引用到水平集传播数值方案中,将SAR 图像分为均匀、异构和极其异构区域。

此外,我们引入了一个基于随机距离和模型的评估过程,用于量化我们方法的鲁棒性和准确性。

实验结果表明,我们的算法对合成和真实SAR 数据都具有准确性。

+简介1、Induction(简介)合成孔径雷达系统是一种成像装置,采用相干照明比如激光和超声波,并会受到斑点噪声的影响。

在SAR图像处理过程中,返回的是斑点噪声和雷达切面建模在一起的结果。

这个积性模型(文献[1])因包含大量的真实SAR数据,并且在获取过程中斑点噪声被建模为固有的一部分而被广泛应用。

因此,SAR图像应用区域边界和目标检测变得更加困难,可能需要斑点去除。

因此,斑点去除是必需的,有效的方法可以在文献[2][3][4][5][6][7][8][9][10]中找到。

对于SAR图像分割,水平集方法构成一类基于哈密顿-雅克比公式的重要算法。

水平集方法允许有效的分割标准公式,从文献[12]中讨论的传播函数项可以得到。

经典方法有着昂贵的计算成本,但现在的水平集的实现配置了有趣的低成本的替换。

数字图像处理 Matlab版 作业1

数字图像处理 Matlab版 作业1

%A、B 是作为图片的变量
>> B1=imread('image2-10.jpg'); >> MSE=sum((A(:)-B1(:)).^2)/(M*N) MSE = 31.3642
>> B2=imread('image2-20.jpg'); MSE=sum((A(:)-B2(:)).^2)/(M*N) MSE = 20.3310
K20=imfinfo('image2-20.jpg'); >> image_byte_20=K20.Width*K20.Height*K20.BitDepth/8; >> CMP_bytes=K20.FileSize; >> CMP_R20=image_byte_20/CMP_bytes CMP_R20 = 16.9368
>>y1=[SNR0,SNR10,SNR20,SNR30,SNR40,SNR50]; y2=[MSE0,MSE1,MSE2,MSE3,MSE4,MSE5]; x=[0,10,20,30,40,50]; plot(x,y1,x,y2) >> y1=[SNR0,SNR10,SNR20,SNR30,SNR40,SNR50]; y2=[MSE0,MSE1,MSE2,MSE3,MSE4,MSE5]; x=[0,10,20,30,40,50]; plot(x,y1,x,y2)
>> K50=imfinfo('image2-50.jpg'); image_byte_50=K50.Width*K50.Height*K50.BitDepth/8; CMP_bytes=K50.FileSize; CMP_R50=image_byte_50/CMP_bytes CMP_R50 = 10.6149 %绘图 1

数字图像处理上机报告

数字图像处理上机报告

练习一常用MATLAB图像处理命令一、练习目的1、熟悉并掌握MATLAB工具的使用;2、实现图像的读取、显示、代数运算和简单变换。

二、练习环境Windows操作系统Matlab 6.5或以上应用软件三、练习内容1、图像文件的读写(1)imread函数用来实现图像文件的读取。

输入以下程序:A=imread('文件名.扩展名');%用imread函数来读入图像注:设置路径imshow(A);%用imshow函数来显示图像得到的结果如图:(2)imfinfo函数用来查询图像文件信息。

输入以下程序:info=imfinfo('文件名.扩展名');% 用imfinfo函数查询图像文件信息得到:info =Filename: '文件名.扩展名'(4)imshow函数用来显示图像。

刚才介绍imread函数时已使用此函数。

(5)colorbar函数将颜色条添加到坐标轴对象中。

输入以下程序:RGB=imread('***');%图像读入I=rgb2gray(RGB);%把RGB图像转换成灰度图像imshow(I),colorbar('vert')% 将颜色条添加到坐标轴对象中得到如图:2、图像处理的基本操作一、图像代数运算(1)imadd函数实现两幅图像的相加或者给一幅图像加上一个常数。

给图像每个像素都增加亮度的程序如下:I=imread('***');J=imadd(I,100);%给图像增加亮度subplot(1,2,1),imshow(I) %填充subplot(1,2,2),imshow(J)结果如图5。

(2)imsubtract函数实现从一幅图像中减去一个常数。

输入以下程序实现从一幅图像中减去一个常数:(3)immultiply实现两幅图像的相乘或者一幅图像的亮度缩放(图像乘以小于1或大于1的参数,比较效果)。

华东政法大学计算机专业数字图像处理matlab作业

华东政法大学计算机专业数字图像处理matlab作业

IFG=ifft2(G); imshow(IFG,[]); title(‘逆变换图像’); (2)h=imnoise(‘motion’,10,10); M=imfilter(f,h); M1=fft2(double(M))… 4、任意选择一幅图像,绘制图像的直方图。可以直接通过使用 imhist(I)来显示图像的直方图 I=imread(‘cameraman.tif’); imshow(I);title('原始图像'); b=size(I); %测量图像尺寸参数 a=zeros(1,256); %创建存放灰度出现概率的向量 for m=1:b(1) for n=1:b(2) a(I(m,n)+1)=a(I(m,n)+1)+1; %将灰度为 I(m,n) 的像素存储在 a (I(m,n)+1) 中, 因为 MATLAB 里没有 a(0); end end n=0:255; figure,bar(n,a); %绘制原始图像的直方图 title('原图像直方图');xlabel('灰度值');ylabel('出现概率 '); 6、读入图像将图像转化成二值图像。在一张图表上,显示原始图像、灰度图像,二值图像; [imm,map]=imread('trees.tif'); % imm 为 2 维矩阵、map 为 256*3 矩阵 figure, imshow(imm,map); % 显示原始图像(彩色) gmap = rgb2gray(map); figure, subplot(1,2,1),imshow(imm,gmap); % 显示灰度图像 subplot(1,2,2),imshow(im2bw(imm,map,0.4),[]); % 显示二值图像 注意:若输入图像是 3 维矩阵,则转化为灰度图像时为 gimm = rgb2gray(imm); 7、读入一幅图像(cameraman.tif) ,完成如下操作,并存储变换后的图像 (1)把图像翻转 90 及 180 度,并显示; (参考 imrotate 函数) (2)缩小图像 (3)切割图像(参考 incrop 函数) (4)镜像图像(如样图所示镜像效果) I=imread(‘cameraman.tif’); H=size(I); I2(1:H(1),1:H(2))=I(H(1):-1:1,1:H(2)); % 垂直翻转(垂直镜像) figure, imshow(I2); I3(1:H(1),1:H(2))=I(1:H(1),H(2):-1:1); % 水平翻转(水平镜像) figure,imshow(I3); I4(1:H(1),1:H(2))=I(H(1):-1:1,H(2):-1:1); % 对角镜像 figure,imshow(I4); 5、对同一场景但模糊程度不一样的三张数字图像绘制出其直方图,计算每一幅图像所有像素灰度的方差。 使用 imhist 求其直方图。计算像素灰度的方差: I=imread(); IG=rgb2gray(I); k=size(IG);

数字图像处理大作业

数字图像处理大作业

数字图像处理大作业学号:姓名:班级:数字图像处理作业用自己拍摄的图像,完成以下作业:1,用Matlab语言完成如下实验:1)打开一个BMP文件2)将其局部区域的灰度值进行改变3)另存为一个新的BMP文件2,Matlab编程实现图像傅立叶高通、低通滤波,给出算法原理及实验结果。

3,找一幅曝光不足的灰度(或彩色)图像,用Matlab按照直方图均衡化的方法进行处理。

4,用Matlab打开一幅图像,添加椒盐、高斯噪声,然后使用邻域平均法、中值滤波法进行平滑。

5,用Matlab打开一幅图像,利用Roberts梯度法、Sobel算子和拉普拉斯算子进行锐化,并比较结果。

以上作业,严禁抄袭。

作业请注明学号,姓名,班级,电话号码。

将纸质版于2012-06-06晚7:00交至B529房间。

1,用Matlab语言完成如下实验:1)打开一个BMP文件2)将其局部区域的灰度值进行改变3)另存为一个新的BMP文件%文件名为way01.bmp 源程序如下:clear all;f=imread('way.bmp');f1=rgb2gray(f); %ת»»Îª»Ò¶Èͼfigure(1);imshow(f1);imwrite(f1,'way01.bmp');f1(100:150,100:120)=256; %¾Ö²¿¸Ä±ä»Ò¶ÈÖµfigure(2);imshow(f1);运行结果为:注:源文件名为way.jpg2,Matlab编程实现图像傅立叶高通、低通滤波,给出算法原理及实验结果。

1)傅里叶高通滤波:源程序为:clear all;I=imread('way01.bmp');figure(1);imshow(I);I=double(I);f=fft2(I);g=fftshift(f);[M,N]=size(g);n1=floor(M/2);n2=floor(N/2);d0=5;for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2);if d>=d0h1=1;elseh1=0;endg1(i,j)=(h1+0.5)*g(i,j);endendg2=ifftshift(g1);g3=uint8(real(ifft2(g2))); figure(2);imshow(g3);title('¸ßͨÂ˲¨½á运行结果为:2)傅里叶低通滤波:源程序为:clear all;I=imread('way01.bmp');figure(1);imshow(I);I=double(I);f=fft2(I); g=fftshift(f); [M,N]=size(g);n1=floor(M/2);n2=floor(N/2);d0=30;for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2);if d<=d0h1=1;elseh1=0;endg1(i,j)=(h1+0)*g(i,j);endendg2=ifftshift(g1);g3=uint8(real(ifft2(g2))); figure(2);imshow(g3);title('µÍͨÂ˲¨½á¹û')运行结果为:3,找一幅曝光不足的灰度(或彩色)图像,用Matlab按照直方图均衡化的方法进行处理。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字图像处理实验报告指导老师:学号姓名班级1.产生右图所示图像f1(m,n),其中图像大小为256×256,中间亮条为128×32,暗处=0,亮处=100。

对其进行FFT:①同屏显示原图f1(m,n)和FFT(f1)的幅度谱图;②若令f2(m,n)=(-1)(m+n)f1(m,n),重复以上过程,比较二者幅度谱的异同,简述理由;③若将f2(m,n)顺时针旋转90度得到f3(m,n),试显示FFT(f3)的幅度谱,并与FFT(f2)的幅度谱进行比较;④若将f1(m,n)顺时针旋转90度得到f4(m,n),令f5(m,n)=f1(m,n)+f4(m,n),试显示FFT(f5)的幅度谱,并指出其与FFT(f1)和FFT(f4)的关系;⑤若令f6(m,n)=f2(m,n)+f3(m,n),试显示FFT(f6)的幅度谱,并指出其与FFT(f2)和FFT(f3)的关系,比较FFT(f6)和FFT(f5)的幅度谱。

f1=zeros(256,256);for i=64:1:192for j=122:1:144f1(i,j)=100;endendfft_f1=fft2(f1);fft_f1=abs(fft_f1);tmax=fft_f1(1,1);tmin=fft_f1(1,1);for i=1:256for j=1:256if tmax<fft_f1(i,j)tmax=fft_f1(i,j);endif tmin>fft_f1(i,j)tmin=fft_f1(i,j);endendenddelta=tmax-tmin;for i=1:256for j=1:256fft_f1(i,j)=255*(fft_f1(i,j)-tmin)/delta;endendsubplot(1,2,1);imshow(f1);title('原图');subplot(1,2,2);imshow(fft_f1);title('原图的幅度谱');for i=1:256for j=1:256f2(i,j)=(-1)^(i+j)*f1(i,j);endendfft_f2=fft2(f2);fft_f2=abs(fft_f2);tmax=fft_f2(1,1);tmin=fft_f2(1,1);for i=1:256for j=1:256if tmax<fft_f2(i,j)tmax=fft_f2(i,j);endif tmin>fft_f2(i,j)tmin=fft_f2(i,j);endendenddelta=tmax-tmin;for i=1:256for j=1:256fft_f2(i,j)=255*(fft_f2(i,j)-tmin)/delta;endendsubplot(2,2,1);imshow(f1);title('原图');subplot(2,2,2);imshow(fft_f1);title('原图的幅度谱');subplot(2,2,3);imshow(f2);title('原图中心化');subplot(2,2,4);imshow(fft_f2);title('原图中心化的幅度谱');f3=imrotate(f2,-90,'bilinear');fft_f3=fft2(f3);fft_f3=abs(fft_f3);tmax=fft_f3(1,1);tmin=fft_f3(1,1);for i=1:256for j=1:256if tmax<fft_f3(i,j)tmax=fft_f3(i,j);endif tmin>fft_f3(i,j)tmin=fft_f3(i,j);endendenddelta=tmax-tmin;for i=1:256for j=1:256fft_f3(i,j)=255*(fft_f3(i,j)-tmin)/delta;endendsubplot(2,2,1);imshow(f2);title('原图中心化');subplot(2,2,2);imshow(fft_f2);title('原图中心化的幅度谱');subplot(2,2,3);imshow(f3);title('旋转后的图像');subplot(2,2,4);imshow(fft_f3);title('旋转后的幅度谱');图像旋转90度后,幅度谱也旋转了90度。

f4=imrotate(f1,-90,'bilinear');f5=f1+f4;fft_f5=fft2(f5);fft_f5=abs(fft_f5);tmax=fft_f5(1,1);tmin=fft_f5(1,1);for i=1:256for j=1:256if tmax<fft_f5(i,j)tmax=fft_f5(i,j);endif tmin>fft_f5(i,j)tmin=fft_f5(i,j);endendenddelta=tmax-tmin;for i=1:256for j=1:256fft_f5(i,j)=255*(fft_f5(i,j)-tmin)/delta;endendsubplot(2,2,1);imshow(f1);title('原图');subplot(2,2,2);imshow(fft_f1);title('原图的幅度谱');subplot(2,2,3);imshow(f5);title('相加后的图像');subplot(2,2,4);imshow(fft_f5);title('相加后的幅度谱');原图与旋转90度后的图像进行叠加后,相应的幅度谱也进行叠加。

f6=f2+f3;fft_f6=fft2(f6);fft_f6=abs(fft_f6);tmax=fft_f6(1,1);tmin=fft_f6(1,1);for i=1:256for j=1:256if tmax<fft_f6(i,j)tmax=fft_f6(i,j);endif tmin>fft_f6(i,j)tmin=fft_f6(i,j);endendenddelta=tmax-tmin;for i=1:256for j=1:256fft_f6(i,j)=255*(fft_f6(i,j)-tmin)/delta;endendsubplot(2,2,1);imshow(fft_f2);title('F2');subplot(2,2,2);imshow(fft_f3);title('F3');subplot(2,2,3);imshow(fft_f5);title('F5');subplot(2,2,4);imshow(fft_f6);title('F6');FFT(2)和FFT(3)相差90度。

FFT(6)是FFT(5)的中心化。

2.产生教材104页题图4.18(右图)所示的二值图像(白为1,黑为0),编程实现习题4.18所要求的处理(3*3的平均滤波和中值滤波)功能(图像四周边界不考虑,处理结果按四舍五入仍取0或1),显示处理前后的图像,比较其异同。

a=zeros(64,64);f=zeros(256,256);for i=1:1:32for j=1:1:32a(i,j)=1;endendfor i=33:1:64for j=33:1:64a(i,j)=1;endendfor i=1:64:256for j=1:64:256f(i:i+63,j:j+63)=a;endendimshow(f)for i=2:1:255for j=2:1:255a=[f(i-1,j-1),f(i-1,j),f(i-1,j+1),f(i,j-1),f(i,j),f(i,j+1),f(i+1,j-1),f(i+1,j),f(i+1, j+1)];b=[f(i-1,j),f(i,j-1),f(i,j),f(i,j+1),f(i+1,j)];c=sort(a);d=sort(b);zlf1(i,j)=c(5);zlf2(i,j)=d(5);endendsubplot(1,3,1);imshow(f);title('原图像');subplot(1,3,2);imshow(zlf1);title('方形中值滤波后图像') subplot(1,3,3);imshow(zlf2);title('十字形中值滤波后图像')for i=2:1:255for j=2:1:255jlf4(i,j)=(f(i-1,j)+f(i+1,j)+f(i,j-1)+f(i,j+1))/4;jlf8(i,j)=(f(i-1,j-1)+f(i-1,j)+f(i-1,j+1)+f(i,j-1)+f(i,j+1)+f(i+1,j-1)+f(i+1,j)+f(i+1 ,j+1))/8;jjlf4(i,j)=(f(i-1,j)+f(i+1,j)+f(i,j-1)+f(i,j+1)+f(i,j))/5;jjlf8(i,j)=(f(i-1,j-1)+f(i-1,j)+f(i-1,j+1)+f(i,j-1)+f(i,j+1)+f(i+1,j-1)+f(i+1,j)+f(i+ 1,j+1)+f(i,j))/9;endendjlf4=round(jlf4);jlf8=round(jlf8);jjlf4=round(jjlf4);jjlf8=round(jjlf8);subplot(2,2,1);imshow(jlf4);title('4邻域平均滤波后图像');subplot(2,2,2);imshow(jlf8);title('8邻域平均滤波后图像')subplot(2,2,3);imshow(jjlf4);title('4邻域加权平均滤波后图像')subplot(2,2,4);imshow(jjlf8);title('8邻域加权平均滤波后图像')放大后可看出区别3.产生教材104页题图4.16所示的灰度图像(白为255,黑为0),分别加入高斯白噪声和椒盐噪声,再分别进行3*3的平均滤波和中值滤波,显示原图像、加噪图像和滤波结果图像,并比较四种滤波结果。

f=zeros(256,256);a=255*ones(210,7);for i=0:1:8f(24:233,(29+24*i):(29+24*i+6))=a;endf1=imnoise(f,'gaussian',0,0.1);%加入均值为零方差为0.1的高斯噪声f2=imnoise(f,'salt & pepper',0.1);%加入噪声密度为0.1的椒盐噪声for i=2:1:255for j=2:1:255a=[f1(i-1,j-1),f1(i-1,j),f1(i-1,j+1),f1(i,j-1),f1(i,j),f1(i,j+1),f1(i+1,j-1),f1(i+1,j ),f1(i+1,j+1)];b=[f2(i-1,j-1),f2(i-1,j),f2(i-1,j+1),f2(i,j-1),f2(i,j),f2(i,j+1),f2(i+1,j-1),f2(i+1,j ),f2(i+1,j+1)];c=sort(a);d=sort(b);zlf1(i,j)=c(5); %中值滤波zlf2(i,j)=d(5);%中值滤波jlf8(i,j)=(f1(i-1,j-1)+f1(i-1,j)+f1(i-1,j+1)+f1(i,j-1)+f1(i,j+1)+f1(i+1,j-1)+f1(i+1,j )+f1(i+1,j+1)+f1(i,j))/9;%平均滤波jjlf8(i,j)=(f2(i-1,j-1)+f2(i-1,j)+f2(i-1,j+1)+f2(i,j-1)+f2(i,j+1)+f2(i+1,j-1)+f2(i+1, j)+f2(i+1,j+1)+f2(i,j))/9;%平均滤波endendsubplot(2,4,1);imshow(f);title('原图像');subplot(2,4,2);imshow(f1);title('高斯噪声污染后的图像');subplot(2,4,3);imshow(zlf1);title('中值滤波后的图像');subplot(2,4,4);imshow(jlf8);title('平均滤波后的图像');subplot(2,4,5);imshow(f);title('原图像');subplot(2,4,6);imshow(f2);title('椒盐噪声污染后的图像');subplot(2,4,7);imshow(zlf2);title('中值滤波后的图像');subplot(2,4,8);imshow(jjlf8);title('平均滤波后的图像');5.(第4、5题选做一题)编程实现教材214页所给图像门限化分割的迭代阈值算法,实现对某一灰度图像的二值化。

相关文档
最新文档