《数字图像处理实验(全完整答案).pdf》由会员分享,可在线阅读,更多相关《数字图像处理实验(全完整答案).pdf(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验一实验一常用常用 MATLABMATLAB 图像处理命令图像处理命令一、实验目的一、实验目的 1、熟悉并掌握MATLAB工具的使用;2、实现图像的读取、显示、代数运算和简单变换。二、实验环境二、实验环境MATLAB 6.5以上版本、WIN XP 或 WIN2000 计算机三、常用函数三、常用函数读写图像文件读写图像文件1 imread1 imread imread imread 函数用于读入各种图像文件,如:函数用于读入各种图像文件,如:a=imread(e:w01.tif)a=imread(e:w01.tif) 2 imwrite 2 imwrite imwrite imwrite 函数
2、用于写入图像文件,如:函数用于写入图像文件,如:imwrite(a,e:w02.tif,imwrite(a,e:w02.tif,tiftif) )3 3imfinfoimfinfo imfinfo imfinfo 函数用于读取图像文件的有关信息,如:函数用于读取图像文件的有关信息,如:imfinfo(e:w01.tif)imfinfo(e:w01.tif)图像的显示图像的显示1 1imageimage image image 函数是函数是 MATLABMATLAB 提供的最原始的图像显示函数,如:提供的最原始的图像显示函数,如: a=1,2,3,4;4,5,6,7;8,9,10,11,12;
3、a=1,2,3,4;4,5,6,7;8,9,10,11,12; image(a); image(a); 2 imshow 2 imshow imshow imshow 函数用于图像文件的显示,如:函数用于图像文件的显示,如: i=imread(e:w01.tif); i=imread(e:w01.tif);imshow(i);imshow(i);titletitle(原图像)(原图像)% %加上图像标题加上图像标题请浏览后下载,资料供参考,期待您的好评与关注!3 colorbar3 colorbar colorbar colorbar 函数用显示图像的颜色条,如:函数用显示图像的颜色条,如:
4、i=imread(e:w01.tif); i=imread(e:w01.tif); imshow(i); imshow(i); colorbar; colorbar;4 figure4 figurefigurefigure 函数用于设定图像显示窗口,如:函数用于设定图像显示窗口,如:figure(1)figure(1); /figure(2) /figure(2);5 subplot5 subplot把图形窗口分成多个矩形部分,每个部分可以分别用来进行显示。把图形窗口分成多个矩形部分,每个部分可以分别用来进行显示。SubplotSubplot(m m,n n,p p)分成)分成 m*nm*n
5、个小窗口,在第个小窗口,在第 p p 个窗口中创建坐标轴为当个窗口中创建坐标轴为当前坐标轴,用于显示图形。前坐标轴,用于显示图形。6 plot6 plot绘制二维图形绘制二维图形plotplot(y y)PlotPlot(x x,y y)xyxy 可以是向量、矩阵。可以是向量、矩阵。图像类型转换图像类型转换1 rgb2gray1 rgb2gray把真彩图像转换为灰度图像把真彩图像转换为灰度图像i=rgb2grayi=rgb2gray(j j)2 im2bw2 im2bw通过阈值化方法把图像转换为二值图像通过阈值化方法把图像转换为二值图像I=im2bwI=im2bw(j j,levellevel
6、)LevelLevel 表示灰度阈值,取值范围表示灰度阈值,取值范围 0101(即(即 0.n0.n),表示阈值取自原图像灰度),表示阈值取自原图像灰度范围的范围的 n%n%请浏览后下载,资料供参考,期待您的好评与关注!3 imresize3 imresize改变图像的大小改变图像的大小I=imresizeI=imresize(j j,m nm n)将图像)将图像 j j 大小调整为大小调整为 m m 行行 n n 列列图像运算图像运算1 imadd1 imadd两幅图像相加,要求同样大小,同种数据类型两幅图像相加,要求同样大小,同种数据类型Z=imaddZ=imadd(x x,y y)表示图
7、像)表示图像 x+yx+y2 imsubstract2 imsubstract两幅图像相减,要求同样大小,同种数据类型两幅图像相减,要求同样大小,同种数据类型Z=imsubtractZ=imsubtract(x x,y y)表示图像表示图像 x-yx-y3 immultiply3 immultiplyZ=immultiplyZ=immultiply(x x,y y)表示图像表示图像 x*yx*y4 imdivide4 imdivideZ=imdivideZ=imdivide(x x,y y)表示图像表示图像 x/yx/y四、实验内容(请将实验程序填写在下方合适的位置,实验图像结果拷屏粘贴)四、
8、实验内容(请将实验程序填写在下方合适的位置,实验图像结果拷屏粘贴)1、读入一幅 RGB 图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示 RGB 图像和灰度图像,注上文字标题。a=imread(f:1.jpg)i = rgb2gray(a)I = im2bw(a,0.5)subplot(3,1,1);imshow(a);title(原图像)subplot(3,1,2);imshow(i);title(灰度图像)subplot(3,1,3);imshow(I);title(二值图像)请浏览后下载,资料供参考,期待您的好评与关注!2、对两幅不同图像执行加、减、乘、除操作,在
9、同一个窗口内分成五个子窗口来分别显示,注上文字标题。a=imread(f:1.jpg)A=imresize(a,800 800)b=imread(f:2.jpg)B=imresize(b,800 800)Z1=imadd(A,B)Z2=imsubtract(A,B)Z3=immultiply(A,B)Z4=imdivide(A,B)subplot(3,2,1); imshow(A);title(原图像 A)subplot(3,2,2); imshow(B);title(原图像 B)subplot(3,2,3); imshow(Z1);title(加法图像)subplot(3,2,4); ims
10、how(Z2);title(减法图像)subplot(3,2,5); imshow(Z3);title(乘法图像)subplot(3,2,6); imshow(Z2);title(除法图像)请浏览后下载,资料供参考,期待您的好评与关注!3、对一幅图像进行灰度变化,实现图像变亮、变暗和负片效果,在同一个窗口内分成四个子窗口来分别显示,注上文字标题。a=imread(f:1.jpg);m = imadjust(a,0.5;1) ;%图像变亮n = imadjust(a,0;0.5) ;%图像变暗g=255-a;%负片效果subplot(2,2,1);imshow(a);title(原图像)subp
11、lot(2,2,2);imshow(m);title(图像变亮)subplot(2,2,3);imshow(n);title(图像变暗)subplot(2,2,4);imshow(g);title(负片效果)请浏览后下载,资料供参考,期待您的好评与关注!4、 熟悉数字图像处理常用函数的使用, 调出帮助文档查看其各种不同用法。方法:选择函数(函数所在区变暗) ,点右键弹出菜单,选择“ Help onSelection”五、实验总结五、实验总结分析图像的代数运算结果,分别陈述图像的加、减、乘、除运算可能的应用领域。请浏览后下载,资料供参考,期待您的好评与关注!实验四实验四常用图像增强方法常用图像增
12、强方法一、实验目的一、实验目的1、熟悉并掌握 MATLAB 图像处理工具箱的使用;2、理解并掌握常用的图像的增强技术。二、实验环境二、实验环境MATLAB 6.5 以上版本、WIN XP 或 WIN2000 计算机三、相关知识三、相关知识1 imnoise1 imnoiseimnoise 函数用于对图像生成模拟噪声,如:i=imread(e:w01.tif);j=imnoise(i,gaussian,0,0.02);模拟均值为0方差为0.02的高斯噪声,j=imnoise(i,salt&pepper, 0.04) 模拟叠加密度为 0.04 的椒盐噪声2 fspecial2 fspecialfs
13、pecial 函数用于产生预定义滤波器,如:h=fspecial(sobel);%sobel 水平边缘增强滤波器h=fspecial(gaussian);%高斯低通滤波器h=fspecial(laplacian);%拉普拉斯滤波器h=fspecial(log);%高斯拉普拉斯(LoG)滤波器h=fspecial(average);%均值滤波器3 3 基于卷积的图像滤波函数基于卷积的图像滤波函数imfilter 函数, filter2 函数,二维卷积 conv2 滤波,都可用于图像滤波,用法类似,如:i=imread(e:w01.tif);h=1,2,1;0,0,0;-1,-2,-1;%产生 S
14、obel 算子的水平方向模板请浏览后下载,资料供参考,期待您的好评与关注!j=filter2(h,i);或者:或者:h = fspecial(prewitt)I = imread(cameraman.tif);imshow(I);H = fspecial(prewitt); %预定义滤波器M = imfilter(I,H);imshow(M)或者:i=imread(e:w01.tif);h=1,1,1;1,1,1;1,1,1;h=h/9;j=conv2(i,h);4 4 其他常用滤波举例其他常用滤波举例(1)中值滤波medfilt2 函数用于图像的中值滤波,如:i=imread(e:w01.t
15、if);j=medfilt2(i,M N);对矩阵 i 进行二维中值滤波,领域为M*N,缺省值为 3*3(2)利用拉氏算子锐化图像, 如:i=imread(e:w01.tif);j=double(i);h=0,1,0;1,-4,0;0,1,0;%拉氏算子k=conv2(j,h,same);请浏览后下载,资料供参考,期待您的好评与关注!三、实验步骤三、实验步骤1、采用二维中值滤波函数 medfilt2 对受椒盐噪声干扰的图像滤波,窗口分别采用 3*3,5*5,7*7I = imread(f:lena.png);J = imnoise(I,salt & pepper,0.04);K1 = medf
16、ilt2(J,3 3);%对矩阵 i 进行二维中值滤波,领域为 3*3K2 = medfilt2(J,5 5);K3 = medfilt2(J,7 7);subplot(2,2,1);imshow(J);title(椒盐噪声干扰图像)subplot(2,2,2);imshow(K1);title(领域为 3*3 二维中值滤波)subplot(2,2,3);imshow(K2);title(领域为 5*5 二维中值滤波)subplot(2,2,4);imshow(K3);title(领域为 7*7 二维中值滤波)2、采用 MATLAB中的函数 filter2 对受噪声干扰的图像进行均值滤波I =
17、 imread(f:lena.png);j=imnoise(i,gaussian,0,0.02);%模拟均值为 0 方差为 0.02 的高斯噪声,M= filter2(fspecial(average,9),J)/255; %模板尺寸为 9subplot(2,1,1);imshow(j);title(噪声干扰图像)subplot(2,1,2);imshow(M);title(改进后的图像)请浏览后下载,资料供参考,期待您的好评与关注!3、采用三种不同算子对图像进行锐化处理。i=imread(f:1.jpg)I=rgb2gray(s)H=fspecial(sobel)%应用 Sobel 算子锐化
18、图像I1=filter2(H,I)%Sobel 算子滤波锐化H=fspecial(prewitt)%应用 prewitt 算子锐化图像I2=filter2(H,I)%prewitt 算子滤波锐化H=fspecial(log)%应用 log 算子锐化图像I3=filter2(H,I)%log 算子滤波锐化subplot(2,2,1);imshow(i);title(原图像)subplot(2,2,2);imshow(I1);title(Sobel 算子锐化图像)subplot(2,2,3);imshow(I2);title(prewitt 算子锐化图像)subplot(2,2,4);imshow
19、(I3);title(log 算子锐化图像)请浏览后下载,资料供参考,期待您的好评与关注!四、实验总结四、实验总结1、比较不同平滑滤波器的处理效果,分析其优缺点2、比较不同锐化滤波器的处理效果,分析其优缺点请浏览后下载,资料供参考,期待您的好评与关注!实验五实验五图像恢复和图像分割图像恢复和图像分割一、实验目的一、实验目的1、熟悉并掌握 MATLAB 图像处理工具箱的使用;2、理解并掌握常用的图像的恢复和分割技术。二、实验环境二、实验环境MATLAB 6.5 以上版本、WIN XP 或 WIN2000 计算机三、相关知识三、相关知识1 deconvwnr1 deconvwnr维纳滤波,用法:J
20、 = deconvwnr(I,PSF,NSR)用维纳滤波算法对图片 I 进行图像恢复后返回图像 J。 I 是一个 N 维数组。PSF 是点扩展函数的卷积。NSP 是加性噪声的噪声对信号的功率比。如:I = im2double(imread(cameraman.tif);imshow(I);title(Original Image );%模拟运动模糊LEN = 21;THETA = 11;PSF = fspecial(motion, LEN, THETA);blurred = imfilter(I, PSF, conv, circular);figure, imshow(blurred)%恢复图
21、像wnr2 = deconvwnr(blurred_noisy, PSF);figure, imshow(wnr2)title(Restoration of Blurred)2 edge2 edge检测灰度或者二值图像的边缘,返回一个二值图像,1 像素是检测到的边缘,0 像素是非边缘。用法:BW = edge(I,sobel,thresh,direction),请浏览后下载,资料供参考,期待您的好评与关注!I 为检测对象;边缘检测算子可用sobel,roberts,prewitt,zerocross,log,canny;thresh 指定阈值,检测时忽略所有小于阈值的边缘,默认自动选择阈值;d
22、irection 方向,在所指定的方向 direction 上,用 算子进行边缘检测horizontal(水平方向)、vertical(垂直方向)或 both(两个方向)。如:I = imread(circuit.tif);BW1 = edge(I,prewitt);imshow(BW1);3 strel3 strel创建形态学结构元素。用法:SE = STREL(arbitrary,NHOOD,HEIGHT) 创建一个指定领域的非平面结构化元素。 HEIGHT 是一个矩阵, 大小和 NHOOD 相同, 他指定了 NHOOD中任何非零元素的高度值。SE = STREL(ball,R,H,N)
23、创建一个空间椭球状的结构元素,其 X-Y 平面半径为 R,高度为H。R 必须为非负整数,H 是一个实数。N 必须为一个非负偶数。当 N0 时此球形结构元素由一系列空间线段结构元素来近似。SE = STREL(diamond,R) 创建一个指定大小 R 平面钻石形状的结构化元素。R 是从结构化元素原点到其点的距离,必须为非负整数。SE = STREL(disk,R,N) 创建一个指定半径 R 的平面圆盘形的结构元素。这里 R 必须是非负整数. N须是 0, 4, 6, 8. 当 N 大于 0 时,圆盘形结构元素由一组 N(或 N+2)个周期线结构元素来近似。 当 N 等于 0 时,不使用近似,
24、即结构元素的所有像素是由到中心像素距离小于等于 R 的像素组成。N 可以被忽略,此时缺省值是 4。注: 形态学操作在 N0 情况下要快于 N=0 的情形。如:se1 = strel(square,11) % 11 乘以 11 的正方形4 imerode4 imerode腐蚀图像用法:IM2 = imerode(IM,SE)腐蚀灰度、二进制或压缩二进制图像 IM ,返回腐蚀图像 IM2 。参数 SE是函数 strel 返回的一个结构元素体或是结构元素体阵列。如:使用一个盘状结构元素腐蚀一幅二进制图像。originalBW = imread(circles.png);se = strel(disk
25、,11);erodedBW = imerode(originalBW,se);imshow(originalBW), figure, imshow(erodedBW)请浏览后下载,资料供参考,期待您的好评与关注!5 imdilate5 imdilate膨胀图像用法:IM2 = imdilate(IM, SE)膨胀灰度图像、二值图像、或者打包的二值图像 IM,返回膨胀图像 M2。变量SE 是一个结构元素或者一个结构元素的数组,其是通过 strel 函数返回的。如:利用一个运行结构元素膨胀灰度图像。I = imread(cameraman.tif);se = strel(ball,5,5);I2
26、= imdilate(I,se);imshow(I), title(Original)figure, imshow(I2), title(Dilated)三、实验步骤三、实验步骤1、产生运动模糊图像,运用维纳滤波进行图像恢复,显示结果。i=imread(f:1.jpg)I=rgb2gray(s)I = im2double(I);%模拟运动模糊LEN = 21;THETA = 11;PSF = fspecial(motion, LEN, THETA);blurred = imfilter(I, PSF, conv, circular);%恢复图像wnr2 = deconvwnr(blurred,
27、 PSF);subplot(1,2,1);imshow(blurred);title(运动模糊图像)subplot(1,2,2);imshow(wnr2);title(恢复图像)2、采用三种不同算子检测图像边缘,显示结果。i=imread(f:1.jpg)BW1 = edge(I,prewitt);BW2 = edge(I,zerocross);BW3 = edge(I,canny);请浏览后下载,资料供参考,期待您的好评与关注!subplot(2,2,1);imshow(i);title(原图像)subplot(2,2,2);imshow(BW1);title(prewitt 边缘图)sub
28、plot(2,2,3);imshow(BW2);title(zerocross 边缘图)subplot(2,2,4);imshow(BW3);title(canny 边缘图)3、对二值图像分别进行方形模板 3*3 和 5*5 的膨胀和腐蚀操作,显示结果。a=imread(f:1.jpg)i = rgb2gray(a)I = im2bw(a,0.5)se3 = strel(disk,3);erodedBW1 = imerode(I,se3);se4 = strel(disk,5);erodedBW2 = imerode(I,se4);se1 = strel(ball,3,3);I1 = imdi
29、late(a,se1);se2 = strel(ball,5,5);I2 = imdilate(a,se2);subplot(2,2,1);imshow(I1);title(3*3 膨胀图像)subplot(2,2,2);imshow(I2);title(5*5 膨胀图像)subplot(2,2,3);imshow(erodedBW1);title(3*3 腐蚀图像)subplot(2,2,4);imshow(erodedBW2);title(5*5 腐蚀图像)请浏览后下载,资料供参考,期待您的好评与关注!请浏览后下载,资料供参考,期待您的好评与关注!实验六实验六图像处理实际应用图像处理实际应
30、用一、实验目的一、实验目的1、熟悉并掌握 MATLAB 图像处理工具箱的使用;2、理解并掌握常用的图像处理技术。二、实验环境二、实验环境MATLAB 6.5 以上版本、WIN XP 或 WIN2000 计算机三、实验内容三、实验内容调试运行下列程序,分析程序,对每条语句给出注释,并显示最终执行结果。 总结算法思想及优缺点.I=imread(Car.jpg);y,x,z=size(I);myI=double(I);% RGB to HSI %tic% Y 方向 %Blue_y=zeros(y,1);for i=1:y for j=1:xif(myI(i,j,1)=30)&(myI(i,j,2)=
31、51)&(myI(i,j,3)=119) % 蓝色 RGB 的灰度范围 Blue_y(i,1)= Blue_y(i,1)+1; end endendtemp MaxY=max(Blue_y); % Y方向车牌区域确定PY1=MaxY;while (Blue_y(PY1,1)=5)&(PY11) PY1=PY1-1;endPY2=MaxY;while (Blue_y(PY2,1)=5)&(PY2y) PY2=PY2+1;endIY=I(PY1:PY2,:,:);请浏览后下载,资料供参考,期待您的好评与关注!% X 方向 %Blue_x=zeros(1,x);for j=1:x for i=PY1
32、:PY2if(myI(i,j,1)=30)&(myI(i,j,2)=51)&(myI(i,j,3)=119) Blue_x(1,j)= Blue_x(1,j)+1; end endendPX1=1;while (Blue_x(1,PX1)3)&(PX1x) PX1=PX1+1;endPX2=x;while (Blue_x(1,PX2)PX1) PX2=PX2-1;endPX1=PX1-2; % 对车牌区域的修正PX2=PX2+2;Plate=I(PY1:PY2,PX1-2:PX2,:);t=toc % 读取计时%figure,imshow(I);figure,plot(Blue_y);grid
33、figure,plot(Blue_x);gridfigure,imshow(IY);添加注释和改正后的程序:I=imread(f:Car.jpg);%读取图片y,x,z=size(I);%给定图片大小myI=double(I);%返回双精度值% RGB to HSI%tic%计时开始% Y 方向 %Blue_y=zeros(y,1);%一列全零矩阵for i=1:y%给定 i 的范围for j=1:x%给定 j 的范围if(myI(i,j,1)=30)&(myI(i,j,2)=51)&(myI(i,j,3请浏览后下载,资料供参考,期待您的好评与关注!)=119) % 蓝色 RGB 的灰度范围B
34、lue_y(i,1)= Blue_y(i,1)+1;% y 矩阵加一endendendtemp MaxY=max(Blue_y);% Y 方向车牌区域确定PY1=MaxY;%y矩阵的最大元素while (Blue_y(PY1,1)=5)&(PY11)% 确定蓝色 RGB Blue_y 所在位置PY1=PY1-1; %对车牌区域的修正,向上调整endPY2=MaxY; %y矩阵的最大元素while (Blue_y(PY2,1)=5)&(PY2y) %确定蓝色 RGB Blue_y 所在位置PY2=PY2+1; %对车牌区域的修正向下调整endIY=I(PY1:PY2,:,:);%行的范围% X
35、方向 %Blue_x=zeros(1,x); %一行全一矩阵for j=1:x%给定 j 的取值范围for i=PY1:PY2%给定 i 的取值范围if(myI(i,j,1)=30)&(myI(i,j,2)=51)&(myI(i,j,3)=119)%调整 I 中的范围Blue_x(1,j)= Blue_x(1,j)+1; % Blue_x 的矩阵加一endendendPX1=1;%当 PX1 等于 1 时while (Blue_x(1,PX1)3)&(PX1x) % 确定蓝色 RGB Blue_x 的位置PX1=PX1+1; %对车牌区域的修正向下调整endPX2=x; %当 PX2 等于 x
36、 时while (Blue_x(1,PX2)PX1) %确定蓝色 RGB Blue_x 的位置PX2=PX2-1; %对车牌区域的修正向下调整endPX1=PX1-2; % 对车牌区域的修正PX2=PX2+2; %对车牌区域的修正Plate=I(PY1:PY2,PX1-2:PX2,:);%矩阵行列的范围t=toc % 读取计时请浏览后下载,资料供参考,期待您的好评与关注!%figure,imshow(I);%创建图像窗口,显示图像 Ifigure,plot(Blue_y);grid%创建图像窗口,绘制 Blue_y 图像,画出网格线figure,plot(Blue_x);grid%创建图像窗口
37、,绘制Blue_x 图像,画出网格线figure,imshow(Plate); %创建图像窗口,显示图像Platet =0.5630请浏览后下载,资料供参考,期待您的好评与关注!请浏览后下载,资料供参考,期待您的好评与关注!请浏览后下载,资料供参考,期待您的好评与关注!请浏览后下载,资料供参考,期待您的好评与关注!实验二实验二图像基本操作图像基本操作一、实验目的一、实验目的1、熟悉及掌握图像的采样原理,实现图像的采样过程,进行图像的灰度转换。2、理解直方图的概念及应用,实现图像直方图的显示,及通过直方图均衡和直方图规定化方法对图像进行修正。二、实验环境二、实验环境MATLAB 6.5以上版本、
38、WIN XP 或 WIN2000 计算机三、相关函数三、相关函数图像的增强1、 直方图imhist 函数用于数字图像的直方图计算或显示,imhist(I, n)计算和显示图像 I 的直方图,n 为指定的灰度级数目,默认为256。如果 I 是二值图像,那么 n 仅有两个值。counts,x = imhist(.)返回直方图数据向量 counts,相应的色彩值向量 x。如:i=imread(e:w01.tif);imhist(i);2 、直方图均衡化histeq 函数用于数字图像的直方图均衡化,J = histeq(I, n)均衡化后的级数 n,缺省值为 64。J = histeq(I, hgra
39、m) 直方图规定化,即将原是图象 I 的直方图变换成用户指定的向量 hgram (即指定另一幅图像的直方图数据向量)。如:i=imread(e:w01.tif);请浏览后下载,资料供参考,期待您的好评与关注!j=histeq(i,N);对图像 i 执行均衡化,得到具有 N 个灰度级的灰度图像 j,N 缺省值为 643、 灰度调整imadjust 函数用于数字图像的灰度或颜色调整,J = imadjust(I) 将灰度图像 I 中的亮度值映射到 J 中的新值并使 1的数据是在低高强度和饱和,这增加了输出图像 J 的对比度值。J = imadjust(I,low_in; high_in,low_o
40、ut; high_out)将图像 I 中的亮度值映射到 J 中的新值, 即将 low_in 至 high_in 之间的值映射到 low_out 至 high_out 之间的值。 low_in 以下与 high_in 以上的值被剪切掉了,也就是说,low_in 以下的值映射到 low_out,high_in 以上的值映射到 high_out。它们都可以使用空的矩阵,默认值是0 1。如:i=imread(e:w01.tif);j=imadjust(i,0.3,0.7,);将图像 i 转换为 j,使灰度值从 0.30.7 与缺省值 01 相匹配运算函数1、Zeros 生成全 0 数组或矩阵如 B =
41、 zeros(m,n) or B = zeros(m n) 返回一个 m*n 全 0 矩阵2、取整函数floor 最小取整函数round 四舍五入取整函数ceil 最大取整函数如 a = -1.9, -0.2, 3.4, 5.6, 7.0, 2.4+3.6iI=round(a)I = -203672+ 4i请浏览后下载,资料供参考,期待您的好评与关注!四、实验内容四、实验内容1、对一幅图像进行 2 倍、4 倍、8 倍和 16 倍减采样,显示结果。a=imread(f:/1.jpg);b=rgb2gray(a);for m=1:4figurewidth,height=size(b);quarti
42、mage=zeros(floor(width/(m),floor(height/(2*m);k=1;n=1;for i=1:(m):widthfor j=1:(2*m):heightquartimage(k,n)=b(i,j);n=n+1;endk=k+1;n=1;endimshow(uint8(quartimage);End请浏览后下载,资料供参考,期待您的好评与关注!请浏览后下载,资料供参考,期待您的好评与关注!请浏览后下载,资料供参考,期待您的好评与关注!请浏览后下载,资料供参考,期待您的好评与关注!2、显示一幅灰度图像 a,改变图像亮度使其整体变暗得到图像b,显示两幅图像的直方图。a=
43、imread(f:lena_color.png)c=rgb2gray(a)b=c-46subplot(2,1,1);imhist(c);title(原图像)subplot(2,1,2);imhist(b);title(变暗后的图像)请浏览后下载,资料供参考,期待您的好评与关注!3、对图像 b 进行直方图均衡化,显示结果图像和对应直方图。b=imread(f:lena_color.png)c=rgb2gray(b)j=histeq(c)subplot(2,2,1),imshow(c)subplot(2,2,2),imshow(j)subplot(2,2,3),imhist(c)%显示原始图像直方
44、图subplot(2,2,4),imhist(j)%显示均衡化后图像的直方图请浏览后下载,资料供参考,期待您的好评与关注!4、读入图像 c,执行直方图规定化,使图像 a 的灰度分布与 c 大致相同,显示变换后图像及对应直方图。I=imread(f:lena.png); J=histeq(I,64);%均衡化成 32 个灰度级的直方图 counts,x=imhist(J);%返回直方图图像向量 countsb=imread(f:1.jpg)Q=rgb2gray(b) M=histeq(Q,counts);%将原始图像 Q 的直方图变成指定向量counts figure, subplot(3,2,
45、1),imshow(I); subplot(3,2,2),imshow(Q); subplot(3,2,3),imhist(I);请浏览后下载,资料供参考,期待您的好评与关注! subplot(3,2,4),imhist(Q) subplot(3,2,5),imhist(J); subplot(3,2,6),imhist(M);请浏览后下载,资料供参考,期待您的好评与关注!实验三实验三 图像变换图像变换一、实验目的一、实验目的1、熟悉及掌握图像的变换原理及性质,实现图像的傅里叶变换。二、实验环境二、实验环境MATLAB 6.5以上版本、WIN XP 或 WIN2000 计算机三、相关函数三、相
46、关函数图像的变换图像的变换1 fft21 fft2 fft2 fft2 函数用于数字图像的二维傅立叶变换,如:函数用于数字图像的二维傅立叶变换,如: i=imread(e:w01.tif); i=imread(e:w01.tif);j=fft2(i);j=fft2(i);由于由于 MATLABMATLAB 无法显示复数图像,因此变换后的结果还需进行求模运算,即无法显示复数图像,因此变换后的结果还需进行求模运算,即调用调用 absabs 函数。函数。之后常常还进行对数变换,即调用之后常常还进行对数变换,即调用 loglog 函数,以减缓傅里叶谱的快速衰减,函数,以减缓傅里叶谱的快速衰减,更好地显
47、示高频信息。更好地显示高频信息。2 ifft22 ifft2 ifft2 ifft2 函数用于数字图像的二维傅立叶反变换,如:函数用于数字图像的二维傅立叶反变换,如: i=imread(e:w01.tif); i=imread(e:w01.tif); j=fft2(i); j=fft2(i);k=ifft2(j);k=ifft2(j);3 fftshift3 fftshift用于将变换后图像频谱中心从矩阵的原点移动到矩阵的中心用于将变换后图像频谱中心从矩阵的原点移动到矩阵的中心B=fftshiftB=fftshift(i i) 4 4 利用利用 fft2fft2 计算二维卷积计算二维卷积请浏览
48、后下载,资料供参考,期待您的好评与关注!利用利用 fft2fft2 函数可以计算二维卷积函数可以计算二维卷积, ,如如: : a=8,1,6;3,5,7;4,9,2; a=8,1,6;3,5,7;4,9,2; b=1,1,1;1,1,1;1,1,1; b=1,1,1;1,1,1;1,1,1; a(8,8)=0; a(8,8)=0; b(8,8)=0; b(8,8)=0; c=ifft2(fft2(a).*fft2(b); c=ifft2(fft2(a).*fft2(b); c=c(1:5,1:5); c=c(1:5,1:5);利用利用 conv2(conv2(二维卷积函数二维卷积函数) )校验
49、校验, , 如:如: a=8,1,6;3,5,7;4,9,2; a=8,1,6;3,5,7;4,9,2; b=1,1,1;1,1,1;1,1,1; b=1,1,1;1,1,1;1,1,1; c=conv2(a,b); c=conv2(a,b);四、实验内容四、实验内容1、对一幅图像进行平移,显示原始图像与处理后图像,分别对其进行傅里叶变换, 显示变换后结果,分析原图的傅里叶谱与平移后傅里叶频谱的对应关系。s=imread(f:1.jpg);%读入原图像i=rgb2gray(s)i=double(i)j=fft2(i);%傅里叶变换k=fftshift(j);% 直流分量移到频谱中心l=log(
50、abs(k);%对数变换m=fftshift(j);%直流分量移到频谱中心RR=real(m);%取傅里叶变换的实部II=imag(m);%取傅里叶变换的虚部请浏览后下载,资料供参考,期待您的好评与关注!A=sqrt(RR.2+II.2);%计算频谱府幅值A=(A-min(min(A)/(max(max(A)*255;% 归一化b=circshift(s,800 450);%对图像矩阵 im 中的数据进行移位操作b=rgb2gray(b)b=double(b)c=fft2(b);%傅里叶变换e=fftshift(c);% 直流分量移到频谱中心l=log(abs(e);%对数变换f=fftshi