数字图像处理 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.设计一个程序,绘制出一幅灰度图象的直方图。

Solution:代码及代码的说明:%作用:返回灰度矩阵a,并画出直方图function a=zhifangtu(x) % x为要分析的图像名加单引号I=imread(x);b=size(I);a=zeros(1,256); % a为一个1*256的矩阵分别记录灰度为0到255的像%的个数for m=1:b(1) %两个for语句将整张图的所有像素都扫描一遍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)endendn=0:255;bar(n,a);%画出直方图s=sum(a) %查看直方图的总的面积等于这张图的总像素值实验结果及分析:在命令窗口中输入zhifangtu('Lenna.bmp')返回s =262144,以及灰度矩阵a,同时有如下直方图输出:分析及结论:在命令窗口中用size命令可查知Lenna.bmp是512*512的,返回的s =262144恰等于512*512,说明所编的直方图的程序恰将所有的像素点都统计了,直方图的总面积等于像素总数。

直方图的作用也就是将一张图中不同灰度值对应像素数的一个统计。

在这个程序的编写中应注意a(I(m,n)+1)= a(I(m,n)+1)+1 不能写成a(I(m,n))= a(I(m,n))+1 ,应为在matlab中矩阵表示没有a(0),若某个像素点的灰度值是0,就会出错,故应写成a(I(m,n)+1)= a(I(m,n)+1)+1形式。

2.对同一场景但模糊程度不一样的三张数字图像绘制出其直方图, 计算每一幅图象所有像素灰度的方差。

图象的清晰度同灰度方差什么关系?Solution:代码及代码的说明:%作用:绘出模糊程度不一样的三张数字图像的直方图,并输出各自灰度方差I1=imread('tu1.bmp');I1=rgb2gray(I1); %转换为灰度图像imwrite(I1,'tu0.bmp'); %由于直方图只能对灰度图作用,故先将其转为灰度图subplot(2,2,1);zhifangtu('tu0.bmp');title('tu1直方图'); %绘出tu1.bmp的直方图k1=size(I1);I1=single(I1);I1=(I1-mean(mean(I1)')).^2; %个像素灰度值减去平均灰%值后再平方t1=sum(sum(I1)')/k1(1)/k1(2), %输出tu1.bmp的所有像素灰度的方差subplot(2,2,2);zhifangtu('tu2.bmp');title('tu2直方图'); %绘出tu2.bmp的直方图I2=imread('tu2.bmp');k2=size(I2);I2=single(I2);I2=(I2-mean(mean(I2)')).^2; %个像素灰度值减去平均灰度值后再%平方t2=sum(sum(I2)')/k2(1)/k2(2), %输出tu2.bmp的所有像素灰度的方差subplot(2,2,3);zhifangtu('tu3.bmp');title('tu3直方图'); %绘出tu3.bmp的直方图I3=imread('tu3.bmp');k3=size(I3);I3=single(I3);I3=(I3-mean(mean(I3)')).^2; %个像素灰度值减去平均灰度值%后再平方t3=sum(sum(I3)')/k3(1)/k3(2), %输出tu3.bmp的所有像素灰度的方差figure;subplot(2,2,1);imshow('tu1.bmp');title('tu1图'); %绘出tu1.bmp的图subplot(2,2,2);imshow('tu2.bmp');title('tu2图'); %绘出tu1.bmp的图subplot(2,2,3);imshow('tu3.bmp');title('tu3图'); %绘出tu1.bmp的图实验结果及分析:上述代码执行后,输出t1 = 7.3027e+003,t2= 6.5808e+003,t3=5.4860e+003;同时输出如下直方图:原始图:分析及结论:tu1,tu2,tu3三幅图是依次变模糊的,三张图的所有像素灰度方差依次为t1 = t1 = 7.3027e+003,t2= 6.5808e+003,t3=5.4860e+003,它们是依次变小的,可知图象的清晰度随灰度方差的变小而变得模糊。

上机实验2

上机实验2

实验目的:1)熟悉MATLAB语言关于图像处理的基本操作。

2)了解MATLAB打开和显示图像,并完成图像格式的转换;实验任务:实验前准备工作:所使用的图像文件都保存在MATLAB安装目录下的\toolbox\images\imdemos子目录下。

(MATLAB默认处理当前工作目录下的图像文件)1)图像的显示:运用MATLAB图像处理工具箱中的imread函数分别读入灰度图像pout.tif、二值图像blobs.png、索引图像trees.tif和RGB图像peppers.png,观察相应的图像矩阵,并运用imshow 函数显示相应图像。

2)读取图像moon.tif,分别按256灰度级显示、按8灰度级显示、按指定灰度范围[64,128]显示。

3)图像的格式转换:用im2bw将灰度图像pout.tif转化为二值图像,并且用imshow显示出来观察图像的特征;用rgb2gray将RGB图像peppers.png转化为灰度图像,并且用imshow显示出来观察图像的特征。

4)对一个RGB彩色图像peppers.png,分别抽取其R、G、B三个分量层,并显示各层图像。

5)保存图像:用imwrite函数将tif图像canoe.tif保存为jpg图像,并保存在D盘附:●函数imread可以从任何MATLAB支持的图像文件格式中,以任意位深度读取一幅图像。

格式为:[X,MAP]=imread('FILENAME.FMT'),其中:FILENAME-为需要读入的图像文件名称,FMT-为图像格式。

●imshow(I)I 为所显示的灰度图像的数据矩阵●imshow(I, n)n为整数,显示灰度级为n的图像,n 缺省为256。

●imshow(I, [low high])I为要显示的图像矩阵。

[low high]为指定显示灰度图像的灰度范围。

高于high的像素被显示成白色;低于low的像素被显示成黑色;介于High和low之间的像素被按比例拉伸后显示为各种等级的灰色。

数字图像处理实习1—Matlab图像处理初步

数字图像处理实习1—Matlab图像处理初步

实验1——Matlab图像处理初步
实验目的:熟悉Matlab语言关于图像处理的基本操作
实验内容:练习imread、imshow、iminfo、imwrite、subplot、for等命令以及矩阵计算有关命令。

实验要求:
1、读取并显示cameraman.tif图像(提示:imread)。

2、将图像中间的1/3部分(如图)分别作如下处理,其余部分不变
a) 每个像素点的值都乘以2,即f(x,y)=2*f(x,y),显示处理前后的图像(提
示:imshow),同一个图像窗口左右显示(提示:subplot),左边显示原
始图像,右边显示处理后图像,处理后图像保存为cameraman1.bmp(提
示:imwrite)
b) 每个像素点取反色,即f(x,y)=255-f(x,y);显示处理前后的图像,同一个
图像窗口上下显示(提示:subplot),上边显示原始图像,下边显示处理
后图像,处理后图像保存为cameraman2.bmp(提示:imwrite)
3、撰写实验报告并附上所用程序和结果。

f=imread('cameraman.tif');
[m n]=size(f);
g=f;
r=round(m/3);
c=round(n/3);
for i=r:2*r
for j=c:2*c
g(i,j)=2*f(i,j);
end
end
subplot(2,1,1),imshow(f);
subplot(2,1,2),imshow(g);
imwrite(g,'cameraman1.bmp','bmp');
2013-12-16。

MATLAB上机题.doc

MATLAB上机题.doc

西北农林科技大学本科课程试卷2011—2012学年第1学期《MATLAB与科学计算》课程A卷(上机考试)专业班级:09农水班命题教师:王增红审题教师:马孝义学生姓名学号:考试成绩:考试须知:1、所有考生请在规定时间内,完成以下操作内容,并将.m文件和操作结果粘贴到试卷中。

2、考试过程中,请注意保存文件,因个人操作造成的文件丢失,按0分计。

3、编程题请注意编程规范,否则酌情扣分。

4、请将姓名和学号填入试卷中指定位置,word文件名请按“s机号-学号-姓名”规则保存。

5、考试结束后停止操作,学生和教师确认文件拷贝无误后,方可离开考场,否则后果自负。

y2=[2 5 4;9 10 5]plot(x1,y1)%x1的列与y1的行相等,与y1的每列对应一条直线,两条直线plot(x1,x2)%x1的列与x2的列相等,与x2的每行对应一条直线,两条直线plot(x1,y2)%x1的列与y2的列相等,与y2的每行对应一条直线,两条直线plot(y1,x1)%y1的行与x1的列相等,与x1的每行对应一条直线,两条直线plot(x2,x1)%x2的列与x1的列相等,与x1的每行对应一条直线,两条直线plot(y2,x1)%y2的列与x1的列相等,与x1的每行对应一条直线,两条直线plot(x2,y2)%x2与y2的行列相等,与y2的每列对应一条直线,三条直线plot(y2,x2)%y2与x2的行列相等,与x2的每列对应一条直线,三条直线其图形如下所示:二、绘图题(根据题意,对下列各题进行绘图,共20分)得分:分(本大题中的3个小题编辑M文件,运行查看图形,并将M文件粘贴到试卷中)1、画一二维饼形图,至少包含三个元素。

(5分)答:x=[100 200 300 400]explode=[1 1 1 1]pie(x,explode,{'一','二','三','四'})2、在同一窗口绘制6个子图,已知t=::2*pi,每个子图分别绘制(其中y1=sin(t),y2=cos(2t),y3=sin(t)+cos(t),y4=3t,y5=2ln(t),y6=e t)(10分)答:t=::2*pisubplot(2,3,1)y1=sin(t)plot(t,y1)title('y1=sin(t)')subplot(2,3,2)y2=cos(2*t)plot(t,y2)title('y2=cos(2t)')subplot(2,3,3)y3=sin(t)+cos(t)plot(t,y3)title('y3=sin(t)+cos(t)')subplot(2,3,4)y4=3*tplot(t,y4)title('y4=3t') subplot(2,3,5) y5=2*log(t) plot(t,y5)title('y5=2ln(t)') subplot(2,3,6) y6=exp(t) plot(t,y6) title('y6=e^t')3、在matlab 的图形窗口中写出标题为表达式⎰⎰±=m mzdx ydx qt 00,字体大小为14号,如右图所示。

苏州大学数字图像Matlab上机实验..

苏州大学数字图像Matlab上机实验..

《数字图像处理与分析》实验报告专业计算机科学与技术年级10级姓名学号任课老师龚声蓉指导老师蒋德茂实验室理工楼243机房学期2013(春)苏州大学计算机科学与技术学院统一印制二零一三年六月实验一:空域及频域增强一.实验目的(1)了解图像变换的意义和手段;(2)熟悉傅里叶变换的基本性质;(3)通过本实验掌握利用MA TLAB编程实现数字图像的傅立叶变换及滤波锐化和复原处理;(4)了解平滑处理的算法和用途,学习使用均值滤波、中值滤波和拉普拉斯锐化进行图像增强处理的程序设计方法。

二.实验内容Matlab编程:实现Butterworth低通滤波和Butterworth高通滤波。

提示:预设Butterworth的阶等于2,d0=10。

使用cameraman.tif作为原图像。

要求:使用subplot函数按3行2列分别显示(1)原始图(2)傅里叶频谱(3)Butterworth低通滤波(4)低通滤波图(5)Butterworth高通滤波(6)高通滤波图三.实验分析(1)Roberts算子用来实现消除图像模糊地增强的方法,即“锐化”。

此处理加强图像的边界和细节。

Roberts算子提出的是在2*2的邻域上计算对角导数产生的偏导数在图像处理中心点上用均值或是绝对值求和的形式结合起来。

但是此算法增强噪声的缺陷也在图像中体现了。

(2)巴特沃思滤波器去的频率和通过的频率之间没有明显的不连续性,图像的模糊程度降低,而且也没有振铃效应,这是由于在低频和高频之间,滤波器平滑过渡的缘故。

四.程序及实验结果程序代码:clc,clear all;I=imread('cameraman.tif');I=im2double(I);subplot(3,2,1);imshow(I,[]);%在一张图里依次显示,三行两列title('原始图');F=fft2(I);G=fftshift(F);subplot(3,2,2);imshow(log(1+abs(G)),[]);title('傅里叶频谱');[m,n]=size(G);c1=floor(m/2); %中心行坐标c2=floor(n/2); %中心列坐标d0=10;for i=1:mfor j=1:nd=sqrt((i-c1)^2+(j-c2)^2);h=1/(1+(d/d0)^4);A(i,j)=h*G(i,j);endendsubplot(3,2,3);imshow(log(1+abs(A)),[]); title('Butterworth低通滤波');d0=10;for i=1:mfor j=1:nd=sqrt((i-c1)^2+(j-c2)^2);h=1/(1+(d/d0)^4);A(i,j)=h*G(i,j);endendf=ifftshift(A);i=real(ifft2(f));subplot(3,2,4);imshow(i,[]);title('低通滤波图');d0=10;for i=1:mfor j=1:nd=sqrt((i-c1)^2+(j-c2)^2);h=1/(1+(d0/d)^4);A(i,j)=h*G(i,j);endendsubplot(3,2,5);imshow(log(1+abs(A)),[]); title('Butterworth高通滤波');d0=40;for i=1:mfor j=1:nd=sqrt((i-c1)^2+(j-c2)^2);h=1/(1+(d0/d)^4);B(i,j)=h*G(i,j);endendf=ifftshift(B);i=real(ifft2(f));subplot(3,2,6);imshow(i,[]); title('高通滤波图');实验结果:实验二:图像编码与压缩一.实验目的(1)了解图像编码与压缩过程;(2)实践算数编码及解码的Matlab编程实现;二.实验内容Matlab编程:算术编码及解码。

数字图像处理MATLAB上机作业

数字图像处理MATLAB上机作业

数字图像处理实验报告指导老师:学号姓名班级1.产生右图所示图像f1(m,n),其中图像大小为256X 256,中间亮条为128X 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);tmi n=fft_f1(1,1);for i=1:256for j=1:256if tmax<fft_f1(i,j)tmax=fft_f1(i,j);endif tmi n> fft_f1(i,j)tmi n=fft_f1(i,j);endendenddelta=tmax-tm in;for i=1:256for j=1:256fft_f1(i,j)=255*(fft_f1(i,j)-tmi n)/delta;endendsubplot(1,2,1);imshow(f1);title( '原图’);subplot(1,2,2);imshow(fft_f1);title('原图的幅度谱’);原因原團的幅度谱for i=1:256for j=1:256 f2(i,j)=(-1)F+j)*f1(i,j);endend fft_f2=fft2(f2); fft_f2=abs(fft_f2);tmax=fft_f2(1,1);tmi n=fft_f2(1,1);for i=1:256for j=1:256if tmax<fft_f2(i,j)tmax=fft_f2(i,j);endif tmi n>fft_f2(i,j)tmi n=fft_f2(i,j);endendenddelta=tmax-tm in;for i=1:256for j=1:256fft_f2(i,j)=255*(fft_f2(i,j)-tmi n)/delta;endend subplot(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('原图中心化的幅度谱’);原團的幅度谱iBv *f3=imrotate(f2,-90, 'bili near' );fft_f3=fft2(f3);fft_f3=abs(fft_f3);tmax=fft_f3(1,1);tmi n=fft_f3(1,1);for i=1:256for j=1:256if tmax<fft_f3(i,j) tmax=fft_f3(i,j);endif tmi n>fft_f3(i,j)tmi n=fft_f3(i,j);endend 原團中心化 原图中心化的幅度谱 原團end delta=tmax-tm in;for i=1:256for j=1:256fft_f3(i,j)=255*(fft_f3(i,j)-tmi n)/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('旋转后的幅度谱’);厲團中心化原图中心化的幅度谱I旋转后的幅度谱WWW图像旋转90度后,幅度谱也旋转了90度。

数字图像处理上机实验报告(基于Matlab)

数字图像处理上机实验报告(基于Matlab)
图像的除法
除法运算可用于校正成像设备的非线性影响。MATLAB中调用imdivide函数进行两幅图像相除。调用格式如下:
Z=imdivide(X,Y),其中Z=X÷Y。
图像四则运算
因对uint8、uintl6数据,每步运算都要进行数据截取,将会减少输出图像的信息量。图像四则运算较好的办法是使用函数imlincomb。该函数按双精度执行所有代数运算操作,仅对最后的输出结果进行截取,该函数的调用格式如下:
s=uint8(real(ifft2(s)));
subplot(2,3,4),imshow(h);title('传递函数'); %显示GHPF滤波器的传递函数
subplot(2,3,5),imshow(s); title('ILPF滤波(d0=50)'); %显示ILPF滤波后的图像
运行结果窗口截图:
第二次实验
1.图像复原算法
图像在形成、传输和记录过程中,由于受到多种原因的影响,图像的质量就会有所下降,典型的表现为图像模糊、失真、有噪声等,这一过程称为图像的退化。
图像复原是试图利用退化过程的先验知识使已退化的图像恢复本来面目,即根据退化的原因,分析引起退化的环境因素,建立相应的数学模型,并沿着使图像降质的逆过程恢复图像。目的在于消除或减轻在图像获取以及传输的过程中造成的图像品质下降,恢复图像的本来面目。因此,复原技术就是把退化模型化,并采用相反的过程进行处理,以便尽可能复原被退化图像的本来面目。
C=A(:,:,1); %取单色%
D=B(:,:,1);
figure('Name','图像逻辑运算')
res1=C&D; %C&D%
res2=C|D; %C|D%

完整word版MATLAB上机作业

完整word版MATLAB上机作业

MATLAB 上机作业1对以下问题编写M文件:(1)用起泡法对10个数由小到大排序。

即将相邻两个数比较,将小的调到前头。

fun cti on f=qip aofa(x)for j=9:-1:1for i=1:jif(x(i)>x(i+1))t=x(i);x(i)=x(i+1);x(i+1)=t;end end end f=xx=rou nd(10*ra nd(1,10))qip aofa(x);(2)有一个4X 5矩阵,编程求出其最大值及其所处的位置。

fun cti on f=zuidazhi(x)a=1;b=1;c=x(1,1);for i=1:4for j=1:5 if x(i,j)>c a=i;b=j;c=x(i,j);endend end f=[c,a,b] x=ra nd(4,5) zuidazhi(x)20(3)编程求送n! ond:fun cti on f=qiuhe(x) b=0;for i=1:xa=p rod(1:i); b=b+a;end f=bqiuhe(20)(4)一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。

求它在第10次落地时,共经过多少米?第10次反弹有多高?fun cti on f=gao(x)b=x;for i=2:10x=x/2;a=x*2; b=b+a;end f=[b x/2]gao(100)⑸有一函数f(x,y)=x2 +sin xy+2y,写一程序,输入自变量的值,输出函数值。

Function f=fun(x)f=x(1)A2+si n(x(1)*x(2))+2*x (2)MATLAB 上机作业21. 求和 Y =1 +4+42+440。

syms k s=4^k;S=symsum(s,k,0,40) 2. 求函数f (X )=2x ' -6x 2-18x + 7的极值,并作图。

y='2*x^3-6*x^2-18*x+7'; y_='-2*xA3+6*xA2+18*x-7';[x_mi n, y_mi n]=fmi nbn d(y,-7,7) [x_max,y_max]=fmi nbn d(y_,-7,7) ezpl ot(y) 3. 设 y =e x sinx-7cosx+5x 2,求 业=?,3^ = dx dxy=ex p(x)*si n(x)-7*cos(x)+5*xA2; dy=diff(y)d2y=diff(y,2) 兀/2 ■ ------------4.求积分 h =J 0 J1-2si n2xdx 。

《MATLAB及其应用》上机作业.doc(修订于2009.11.19)

《MATLAB及其应用》上机作业.doc(修订于2009.11.19)

《MATLAB及其应用》上机作业学院名称:(四号宋体)专业班级:(四号宋体)学生姓名:(四号宋体)学生学号:(四号宋体)年月作业11.用MATLAB 可以识别的格式输入下面两个矩阵12342357135732391894A ⎛⎫⎪ ⎪ ⎪= ⎪ ⎪ ⎪⎝⎭,144367723355422675342189543i i B i +⎛⎫ ⎪+⎪= ⎪+ ⎪⎪⎝⎭再求出它们的乘积矩阵C ,并将C 矩阵的右下角23⨯子矩阵赋给D 矩阵。

赋值完成后,调用相应的命令查看MATLAB 工作空间的占有情况。

2.设矩阵16231351110897612414152⎛⎫⎪⎪ ⎪ ⎪⎝⎭,求A ,1A -,3A ,12A A -+,1'3A A --,并求矩阵A 的特征值和特征向量。

3.解下列矩阵方程:010100143100001201001010120X -⎛⎫⎛⎫⎛⎫ ⎪ ⎪ ⎪=- ⎪ ⎪ ⎪ ⎪ ⎪ ⎪-⎝⎭⎝⎭⎝⎭4.一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。

求它在第10次落地时,共经过多少米?第10次反弹有多高?5.用MATLAB 语言实现下面的分段函数5,1(),25,y f x x ⎧⎪⎪==⎨⎪-⎪⎩101010x x x >≤<-6.分别用for 和while 循环编写程序,求出6323626312122222i i K ===++++++∑并考虑一种避免循环的简洁方法来进行求和,并比较各种算法的运行时间。

7.应用MA TLAB 语言及二分法编写求解一元方程32()1459700f x x x x =-+-=在区间[3,6]的实数解的算法,要求绝对误差不超过0.001。

8.二阶系统的单位阶跃响应为1cos )t y a ζζ-=+,在同一平面绘制ζ分别为0,0.3,0.5,0.707的单位阶跃响应曲线。

要求:(1)四条曲线的颜色分别为蓝、绿、红、黄,线型分别为“——”、“……”、“oooooo”、“++++++”; (2)添加横坐标轴和纵坐标轴名分别为“时间t”和“响应y”,并在平面图上添加标题“二阶系统曲线”和网格;(3)在右上角添加图例(即用对应的字符串区分图形上的线),并分别在对应的响应曲线的第一个峰值处标示“zeta =0”、“zeta =0.3”、“zeta =0.5”、“zeta =0.707”。

  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页所给图像门限化分割的迭代阈值算法,实现对某一灰度图像的二值化。

相关文档
最新文档