数字图像处理实验1
数字图像处理 第三版 (冈萨雷斯,自己整理的1)

1.1 图像与图像处理的概念图像(Image):使用各种观测系统以不同形式和手段观测客观世界而获得的,可以直接或间接作用于人眼并进而产生视觉的实体。
包括:·各类图片,如普通照片、X光片、遥感图片;·各类光学图像,如电影、电视画面;·客观世界在人们心目中的有形想象以及外部描述,如绘画、绘图等。
数字图像:为了能用计算机对图像进行加工,需要把连续图像在坐标空间和性质空间都离散化,这种离散化了的图像是数字图像。
图像中每个基本单元叫做图像的元素,简称像素(Pixel)。
数字图像处理(Digital Image Processing):是指应用计算机来合成、变换已有的数字图像,从而产生一种新的效果,并把加工处理后的图像重新输出,这个过程称为数字图像处理。
也称之为计算机图像处理(Computer Image Processing)。
1.2 图像处理科学的意义1.图像是人们从客观世界获取信息的重要来源·人类是通过感觉器官从客观世界获取信息的,即通过耳、目、口、鼻、手通过听、看、味、嗅和接触的方式获取信息。
在这些信息中,视觉信息占70%。
·视觉信息的特点是信息量大,传播速度快,作用距离远,有心理和生理作用,加上大脑的思维和联想,具有很强的判断能力。
·人的视觉十分完善,人眼灵敏度高,鉴别能力强,不仅可以辨别景物,还能辨别人的情绪。
2.图像信息处理是人类视觉延续的重要手段非可见光成像。
如:γ射线、X射线、紫外线、红外线、微波。
利用图像处理技术把这些不可见射线所成图像加以处理并转换成可见图像,可对非人类习惯的那些图像源进行加工。
3.图像处理技术对国计民生有重大意义图像处理技术发展到今天,许多技术已日益趋于成熟,应用也越来越广泛。
它渗透到许多领域,如遥感、生物医学、通信、工业、航空航天、军事、安全保卫等。
1.3 数字图像处理的特点1. 图像信息量大每个像素的灰度级至少要用6bit(单色图像)来表示,一般采用8bit(彩色图像),高精度的可用12bit 或16bit。
数字图像处理及matlab实现源代码【1】

% *-*--*-*-*-*-*-*-*-*-*-*-*图像处理*-*-*-*-*-*-*-*-*-*-*-*%{% (一)图像文件的读/写A=imread('drum.jpg'); % 读入图像imshow(A); % 显示图像imwrite(A,'drum.jpg');info=imfinfo('drum.jpg') % 查询图像文件信息% 用colorbar函数将颜色条添加到坐标轴对象中RGB=imread('drum.jpg');I=rgb2gray(RGB); % 把RGB图像转换成灰度图像h=[1 2 1;0 0 0;-1 -2 -1];I2=filter2(h,I);imshow(I2,[]);colorbar('vert') % 将颜色条添加到坐标轴对象中% wrap函数将图像作为纹理进行映射A=imread('4.jpg');imshow(A);I=rgb2gray(RGB);[x,y,z]=sphere;warp(x,y,z,I); % 用warp函数将图像作为纹理进行映射%}% subimage函数实现一个图形窗口中显示多幅图像RGB=imread('drum.jpg');I=rgb2gray(RGB);subplot(1,2,1);subimage(RGB); % subimage函数实现一个图形窗口中显示多幅图像subplot(1,2,2),subimage(I);% *-*--*-*-*-*-*-*-*-*-*-*-*图像处理*-*-*-*-*-*-*-*-*-*-*-*% (二)图像处理的基本操作% ----------------图像代数运算------------------%{% imadd函数实现两幅图像的相加或给一幅图像加上一个常数% 给图像每个像素都增加亮度I=imread('4.jpg');J=imadd(I,100); % 给图像增加亮度subplot(1,2,1),imshow(I);title('原图');subplot(1,2,2),imshow(J);title('增加亮度图');%% imsubtract函数实现将一幅图像从另一个图像中减去或减去一个常数I=imread('drum.jpg');J=imsubtract(I,100); % 给图像减去亮度subplot(1,2,1),imshow(I);%% immultiply实现两幅图像的相乘或者一幅图像的亮度缩放I=imread('drum.jpg');J=immultiply(I,2); % 进行亮度缩放subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(J);%% imdivide函数实现两幅图像的除法或一幅图像的亮度缩放I=imread('4.jpg');J=imdivide(I,0.5); % 图像的亮度缩放subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(J);%}% ----------------图像的空间域操作------------------%{% imresize函数实现图像的缩放J=imread('4.jpg');subplot(1,2,1),imshow(J);title('原图');X1=imresize(J,0.2); % 对图像进行缩放subplot(1,2,2),imshow(X1);title('缩放图');%% imrotate函数实现图像的旋转I=imread('drum.jpg');J=imrotate(I,50,'bilinear'); % 对图像进行旋转subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(J);%% imcrop函数实现图像的剪切I=imread('drum.jpg');I2=imcrop(I,[1 100 130 112]); % 对图像进行剪切subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(I2);%}% ----------------特定区域处理------------------%{% roipoly函数用于选择图像中的多边形区域I=imread('4.jpg');c=[200 250 278 248 199 172];r=[21 21 75 121 121 75];BW=roipoly(I,c,r); % roipoly函数选择图像中的多边形区域subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(BW);%% roicolor函数式对RGB图像和灰度图像实现按灰度或亮度值选择区域进行处理a=imread('4.jpg');subplot(2,2,1),imshow(a);I=rgb2gray(a);BW=roicolor(I,128,225); % 按灰度值选择的区域subplot(2,2,4),imshow(BW);%% ploy2mask 函数转化指定的多边形区域为二值掩模x=[63 186 54 190 63];y=[60 60 209 204 601];bw=poly2mask(x,y,256,256); % 转化指定的多边形区域为二值掩模imshow(bw);hold onplot(x,y,'r','LineWidth',2);hold off%% roifilt2函数实现区域滤波a=imread('4.jpg');I=rgb2gray(a);c=[200 250 278 248 199 172];r=[21 21 75 121 121 75];BW=roipoly(I,c,r); % roipoly函数选择图像中的多边形区域h=fspecial('unsharp');J=roifilt2(h,I,BW); % 区域滤波subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(J);%% roifill函数实现对特定区域进行填充a=imread('4.jpg');I=rgb2gray(a);c=[200 250 278 248 199 172];r=[21 21 75 121 121 75];J=roifill(I,c,r); % 对特定区域进行填充subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(J);%}% ----------------图像变换------------------%{% fft2 和ifft2函数分别是计算二维的快速傅里叶变换和反变换f=zeros(100,100);subplot(1,2,1);imshow(f);f(20:70,40:60)=1;subplot(1,2,2);imshow(f);F=fft2(f); % 计算二维的快速傅里叶变换F2=log(abs(F));% 对幅值对对数figure;subplot(1,2,1),imshow(F),colorbar;subplot(1,2,2),imshow(F2),colorbar;%% fftsshift 函数实现了补零操作和改变图像显示象限f=zeros(100,100);subplot(2,2,1),imshow(f);title('f')f(10:70,40:60)=1;subplot(2,2,2),imshow(f);title('f取后')F=fft2(f,256,256);subplot(2,2,3),imshow(F);title('F')F2=fftshift(F); % 实现补零操作subplot(2,2,4),imshow(F2);title('F2')figure,imshow(log(abs(F2)));title('log(|F2|)')%% dct2 函数采用基于快速傅里叶变换的算法,用于实现较大输入矩阵的离散余弦变换% idct2 函数实现图像的二维逆离散余弦变换RGB=imread('drum.jpg');I=rgb2gray(RGB);J=dct2(I); % 对I进行离散余弦变换imshow(log(abs(J))),title('对原图离散后取对数'),colorbar;J(abs(J)<10)=0;K=idct2(J); % 图像的二维逆离散余弦变换figure,imshow(I),title('原灰度图')figure,imshow(K,[0,255]);title('逆离散变换');%% dctmtx 函数用于实现较小输入矩阵的离散余弦变figure;RGB=imread('4.jpg');I=rgb2gray(RGB);subplot(3,2,1),imshow(I),title('原灰度图');I=im2double(I);subplot(3,2,2),imshow(I),title('取双精度后');T=dctmtx(8); % 离散余弦变换subplot(3,2,3),imshow(I),title('离散余弦变换后');B=blkproc(I,[8,8],'P1*x*P2',T,T');subplot(3,2,4),imshow(B),title('blkproc作用I后的B');mask=[ 1 1 1 1 0 0 0 01 1 1 0 0 0 0 01 1 0 0 0 0 0 01 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0 ];B2=blkproc(B,[8,8],'P1.*x',mask);subplot(3,2,5),imshow(B2),title('blkproc作用B后的B2');I2=blkproc(B2,[8,8],'P1*x*P2',T',T);subplot(3,2,6),imshow(I2),title('blkproc作用B2后的I2');%% edge函数用于提取图像的边缘RGB=imread('4.jpg');I=rgb2gray(RGB);BW=edge(I);imshow(I);figure,imshow(BW);%% radon 函数用来计算指定方向上图像矩阵的投影RGB=imread('4.jpg');I=rgb2gray(RGB);BW=edge(I);theta=0:179;[R,XP]=radon(BW,theta); % 图像矩阵的投影figure,imagesc(theta,XP,R);colormap(hot);xlabel('\theta(degrees)');ylabel('x\prime');title('R_{\theta}(x\prime)');colorbar;%}% ----------------图像增强、分割和编码------------------%{% imhist 函数产生图像的直方图A=imread('4.jpg');B=rgb2gray(A);subplot(2,1,1),imshow(B);subplot(2,1,2),imhist(B);%% histeq 函数用于对图像的直方图均衡化A=imread('4.jpg');B=rgb2gray(A);subplot(2,1,1),imshow(B);subplot(2,1,2),imhist(B);C=histeq(B); % 对图像B进行均衡化figure;subplot(2,1,1),imshow(C);subplot(2,1,2),imhist(C);%% filter2 函数实现均值滤波a=imread('4.jpg');I=rgb2gray(a);subplot(2,2,1),imshow(I);K1=filter2(fspecial('average',3),I)/255; % 3*3的均值滤波K2=filter2(fspecial('average',5),I)/255; % 5*5的均值滤波K3=filter2(fspecial('average',7),I)/255; % 7*7的均值滤波subplot(2,2,2),imshow(K1);subplot(2,2,3),imshow(K2);subplot(2,2,4),imshow(K3);%% wiener2 函数实现Wiener(维纳)滤波a=imread('4.jpg');I=rgb2gray(a);subplot(2,2,1),imshow(I);K1=wiener2(I,[3,3]); % 3*3 wiener滤波K2=wiener2(I,[5,5]); % 5*5 wiener滤波K3=wiener2(I,[7,7]); % 7*7 wiener滤波subplot(2,2,2),imshow(K1);subplot(2,2,3),imshow(K2);subplot(2,2,4),imshow(K3);%% medfilt2 函数实现中值滤波a=imread('4.jpg');I=rgb2gray(a);subplot(2,2,1),imshow(I);K1=medfilt2(I,[3,3]); % 3*3 中值滤波K2=medfilt2(I,[5,5]); % 5*5 中值滤波K3=medfilt2(I,[7,7]); % 7*7 中值滤波subplot(2,2,2),imshow(K1);subplot(2,2,3),imshow(K2);subplot(2,2,4),imshow(K3);%}% ----------------图像模糊及复原------------------%{% deconvwnr 函数:使用维纳滤波器I=imread('qier.jpg');imshow(I);% 对图像进行模糊处理LEN=31;THETA=11;PSF1=fspecial('motion',LEN,THETA); % 运动模糊PSF2=fspecial('gaussian',10,5); % 高斯模糊Blurred1=imfilter(I,PSF1,'circular','conv'); % 得到运动模糊图像Blurred2=imfilter(I,PSF2,'conv'); % 得到高斯噪声模糊图像figure;subplot(1,2,1);imshow(Blurred1);title('Blurred1--"motion"'); subplot(1,2,2);imshow(Blurred2);title('Blurred2--"gaussian"');% 对模糊图像加噪声V=0.002;BlurredNoisy1=imnoise(Blurred1,'gaussian',0,V); % 加高斯噪声BlurredNoisy2=imnoise(Blurred2,'gaussian',0,V); % 加高斯噪声figure;subplot(1,2,1);imshow(BlurredNoisy1);title('BlurredNoisy1'); subplot(1,2,2);imshow(BlurredNoisy2);title('BlurredNoisy2');% 进行维纳滤波wnr1=deconvwnr(Blurred1,PSF1); % 维纳滤波wnr2=deconvwnr(Blurred2,PSF2); % 维纳滤波figure;subplot(1,2,1);imshow(wnr1);title('Restored1,True PSF'); subplot(1,2,2);imshow(wnr2);title('Restored2,True PSF');%% deconvreg函数:使用约束最小二乘滤波器I=imread('qier.jpg');imshow(I);% 对图像进行模糊处理LEN=31;THETA=11;PSF1=fspecial('motion',LEN,THETA); % 运动模糊PSF2=fspecial('gaussian',10,5); % 高斯模糊Blurred1=imfilter(I,PSF1,'circular','conv'); % 得到运动模糊图像Blurred2=imfilter(I,PSF2,'conv'); % 得到高斯噪声模糊图像figure;subplot(1,2,1);imshow(Blurred1);title('Blurred1--"motion"');subplot(1,2,2);imshow(Blurred2);title('Blurred2--"gaussian"');% 对模糊图像加噪声V=0.002;BlurredNoisy1=imnoise(Blurred1,'gaussian',0,V); % 加高斯噪声BlurredNoisy2=imnoise(Blurred2,'gaussian',0,V); % 加高斯噪声figure;subplot(1,2,1);imshow(BlurredNoisy1);title('BlurredNoisy1');subplot(1,2,2);imshow(BlurredNoisy2);title('BlurredNoisy2');NP=V*prod(size(I));reg1=deconvreg(BlurredNoisy1,PSF1,NP); % 约束最小二乘滤波reg2=deconvreg(BlurredNoisy2,PSF2,NP); % 约束最小二乘滤波figure;subplot(1,2,1);imshow(reg1);title('Restored1 with NP');subplot(1,2,2);imshow(reg2);title('Restored2 with NP');%% deconvlucy函数:使用Lucy-Richardson滤波器I=imread('qier.jpg');imshow(I);% 对图像进行模糊处理LEN=31;THETA=11;PSF1=fspecial('motion',LEN,THETA); % 运动模糊PSF2=fspecial('gaussian',10,5); % 高斯模糊Blurred1=imfilter(I,PSF1,'circular','conv'); % 得到运动模糊图像Blurred2=imfilter(I,PSF2,'conv'); % 得到高斯噪声模糊图像figure;subplot(1,2,1);imshow(Blurred1);title('Blurred1--"motion"');subplot(1,2,2);imshow(Blurred2);title('Blurred2--"gaussian"');% 对模糊图像加噪声V=0.002;BlurredNoisy1=imnoise(Blurred1,'gaussian',0,V); % 加高斯噪声BlurredNoisy2=imnoise(Blurred2,'gaussian',0,V); % 加高斯噪声figure;subplot(1,2,1);imshow(BlurredNoisy1);title('BlurredNoisy1');subplot(1,2,2);imshow(BlurredNoisy2);title('BlurredNoisy2');luc1=deconvlucy(BlurredNoisy1,PSF1,5); % 使用Lucy-Richardson滤波luc2=deconvlucy(BlurredNoisy1,PSF1,15); % 使用Lucy-Richardson滤波figure;subplot(1,2,1);imshow(luc1);title('Restored Image,NUMIT=5'); subplot(1,2,2);imshow(luc2);title('Restored Image,NUMIT=15');%}% deconvblind 函数:使用盲卷积算法a=imread('4.jpg');I=rgb2gray(a);figure;imshow(I);title('Original Image');PSF=fspecial('motion',13,45); % 运动模糊figure;imshow(PSF);Blurred=imfilter(I,PSF,'circ','conv'); % 得到运动模糊图像figure;imshow(Blurred);title('Blurred Image');INITPSF=ones(size(PSF));[J,P]=deconvblind(Blurred,INITPSF,30); % 使用盲卷积figure;imshow(J);figure;imshow(P,[],'notruesize');% *-*--*-*-*-*-*-*-*-*-*-*-*图像处理*-*-*-*-*-*-*-*-*-*-*-* %{% 对图像进行减采样a=imread('lena.jpg');%subplot(1,4,1);figure;imshow(a);title('原图');b=rgb2gray(a);%subplot(1,4,2);figure;imshow(b);title('原图的灰度图');[wid,hei]=size(b);%---4倍减采样----quartimg=zeros(wid/2+1,hei/2+1);i1=1;j1=1;for i=1:2:widfor j=1:2:heiquartimg(i1,j1)=b(i,j);j1=j1+1;endi1=i1+1;j1=1;end%subplot(1,4,3);figure;imshow(uint8(quartimg));title('4倍减采样')% ---16倍减采样---quanrtimg=zeros(wid/4+1,hei/4+1);i1=1;j1=1;for i=1:4:widfor j=1:4:heiquanrtimg(i1,j1)=b(i,j);j1=j1+1;endi1=i1+1;j1=1;end%subplot(1,4,4);.figure;imshow(uint8(quanrtimg));title('16倍减采样');%}% 图像类型% 将图像转换为256级灰度图像,64级灰度图像,32级灰度图像,8级灰度图像,2级灰度图像a=imread('4.jpg');%figure;subplot(2,3,1);imshow(a);title('原图');b=rgb2gray(a); % 这是256灰度级的图像%figure;subplot(2,3,2);imshow(b);title('原图的灰度图像');[wid,hei]=size(b);img64=zeros(wid,hei);img32=zeros(wid,hei);img8=zeros(wid,hei);img2=zeros(wid,hei);for i=1:widfor j=j:heiimg64(i,j)=floor(b(i,j)/4); % 转化为64灰度级endend%figure;subplot(2,3,3);imshow(uint8(img64),[0,63]);title('64级灰度图像');for i=1:widfor j=1:heiimg32(i,j)=floor(b(i,j)/8);% 转化为32灰度级endend%figure;subplot(2,3,4);imshow(uint8(img32),[0,31]);title('32级灰度图像');for i=1:widfor j=1:heiimg8(i,j)=floor(b(i,j)/32);% 转化为8灰度级endend%figure;subplot(2,3,5);imshow(uint8(img8),[0,7]);title('8级灰度图像');for i=1:widfor j=1:heiimg2(i,j)=floor(b(i,j)/128);% 转化为2灰度级endend%figure;subplot(2,3,6);imshow(uint8(img2),[0,1]);title('2级灰度图像');% *-*--*-*-*-*-*-*-*-*-*-*-*图像处理*-*-*-*-*-*-*-*-*-*-*-* %{% ------------------ 图像的点运算------------------I=imread('lena.jpg');figure;subplot(1,3,1);imshow(I);title('原图的灰度图');J=imadjust(I,[0.3;0.6],[0.1;0.9]); % 设置灰度变换的范围subplot(1,3,2);imshow(J);title('线性扩展');I1=double(I); % 将图像转换为double类型I2=I1/255; % 归一化此图像C=2; % 非线性扩展函数的参数K=C*log(1+I2); % 对图像的对数变换subplot(1,3,3);imshow(K);title('非线性扩展');M=255-I;figure;subplot(1,3,1);imshow(M);title('灰度倒置');N1=im2bw(I,0.4); % 将此图像二值化,阈值为0.4N2=im2bw(I,0.7); % 将此图像二值化,阈值为0.7 subplot(1,3,2);imshow(N1);title('二值化阈值0.4');subplot(1,3,3);imshow(N2);title('二值化阈值0.7');%}%{% ------------------ 图像的代数运算------------------% 将两幅图像进行加法运算I=imread('lena.jpg');I=rgb2gray(I);J=imread('rice.png');% 以下把两幅图转化为大小一样for i=1:size(I)for j=size(J):size(I)J(i,j)=0;endendI=im2double(I); % 将图像转化为double型J=im2double(J);% imshow(I);figure;imshow(J);K=I+0.3*J; % 将两幅图像相加subplot(1,3,1);imshow(I);title('人物图');subplot(1,3,2);imshow(J);title('背景图');subplot(1,3,3);imshow(K);title('相加后的图');imwrite(K,'i_lena1.jpg');%%% 将两幅图像做减运算,分离背景与原图A=imread('i_lena1.jpg');B=imread('rice.png');% 以下把两幅图转化为大小一样for i=1:size(A)for j=size(B):size(A)B(i,j)=0;endendC=A-0.3*B;a=imread('lena.jpg');subplot(2,2,1);imshow(a);title('原图图');subplot(2,2,2);imshow(A);title('混合图');subplot(2,2,3);imshow(B);title('背景图');subplot(2,2,4);imshow(C);title('分离后的图');%% 设置掩模,需要保留下来的区域,掩模图像的值为1,否则为0 A=imread('drum.jpg');A=rgb2gray(A);A=im2double(A);sizeA=size(A);subplot(1,2,1);imshow(A);title('原图');B=zeros(sizeA(1),sizeA(2)); % 设置模板B(100:400,100:500)=1;K=A.*B; % 两幅图像相乘subplot(1,2,2);imshow(K);title('局部图');%}%{% ------------------ 图像的缩放------------------A=imread('drum.jpg');B1=imresize(A,1.5); % 比例放大1.5杯,默认采用的是最近邻法进行线性插值B2=imresize(A,[420 384]); % 非比例放大到420:384C1=imresize(A,0.7); % 比例缩小0.7倍C2=imresize(A,[150 180]); % 非比例缩小到150:180figure;imshow(B1);title('比例放大图');figure;imshow(B2);title('非比例放大图');figure;imshow(C1);title('比例缩小图');figure;imshow(C2);title('非比例缩小图');% 检测非比例缩放得到的图片是否能还原到原图a=size(A)d=imresize(C2,[a(1),a(2)]);figure;imshow(d);%}% ------------------ 图像的旋转------------------I=imread('drum.jpg');J=imrotate(I,45); % 图像进行逆时针旋转,默认采用最近邻插值法进行插值处理K=imrotate(I,90); % 默认旋转出界的部分不被截出subplot(1,3,1);imshow(I);subplot(1,3,2);imshow(J);subplot(1,3,3);imshow(K);% 检测旋转后的图像是否失真P=imrotate(K,270);figure;imshow(P);。
数字图像处理课件ppt

06 数字图像处理的应用案例
人脸识别系统
总结词
人脸识别系统是数字图像处理技术的重要应 用之一,它利用计算机视觉和图像处理技术 识别人的面部特征,实现身份认证和安全监 控等功能。
详细描述
人脸识别系统通过采集输入的人脸图像,提 取出面部的各种特征,如眼睛、鼻子、嘴巴 等部位的形状、大小、位置等信息,并与预 先存储的人脸特征进行比对,从而判断出人 的身份。该系统广泛应用于门禁系统、安全
分类器设计
总结词
分类器设计是图像识别技术的核心,它通过训练分类器,使其能够根据提取的特征对图 像进行分类和识别。
详细描述
分类器设计通常采用机器学习算法,如支持向量机、神经网络和决策树等。这些算法通 过训练数据集进行学习,并生成分类器模型,用于对新的未知图像进行分类和识别。
模式识别
总结词
模式识别是图像识别技术的最终目标,它通 过分类器对提取的特征进行分类和识别,实 现对图像的智能理解和处理。
源调查和环境监测。
计算机视觉
为机器人和自动化系统提供视 觉感知能力,用于工业自动化
、自主导航等。
数字图像处理的基本流程
特征提取
从图像中提取感兴趣的区域、 边缘、纹理等特征,为后续分 类或识别提供依据。
图像表示与压缩
将图像转换为易于处理和分析 的表示形式,同时进行数据压 缩,减少存储和传输成本。
预处理
详细描述
模式识别在许多领域都有广泛应用,如人脸 识别、物体识别、车牌识别等。通过模式识 别技术,可以实现自动化监控、智能安防、 智能驾驶等应用。随着深度学习技术的发展 ,模式识别的准确率和鲁棒性得到了显著提 高。
05 数字图像处理中的常用算 法
傅里叶变换算法
傅里叶变换
精品文档-数字图像处理(第三版)(何东健)-第1章

第1章 概论
5. 图像分析(Image Analysis 图像处理应用的目标几乎均涉及图像分析, 即对图像中 的不同对象进行分割、 特征提取和表示, 从而有利于计算机 对图像进行分类、 识别和理解。 在工业产品零件无缺陷且正确装配检测中, 图像分析是 把图像中的像素转化成一个“合格”或“不合格”的判定。 在医学图像处理中, 不仅要检测出异变(如肿瘤)的存在, 而且还要检查其尺寸大小。
第1章 概论 图像自动分割是图像处理中最困难的问题之一。 人类视 觉系统能够将所观察的复杂场景中的对象分开并识别出每个物 体。 但对计算机来说, 却是一个非常困难的问题。 由于解 决和分割有关的基本问题是特定领域中图像分析实用化的关键 一步, 因此, 将各种方法融合在一起并使用知识来提高处理 的可靠性和有效性是图像分割的研究热点。
第1章 概论 4. 图像分割(Image Segmentation 把图像分成区域的过程即图像分割。 图像中通常包含多 个对象, 例如, 一幅医学图像中显示出正常的或有病变的各 种器官和组织。 为达到识别和理解的目的, 必须按照一定的 规则将图像分割成区域, 每个区域代表被成像的一个物体 (或部分)。
第1章 概论
(4) 图像数据量庞大。 图像中包含有丰富的信息, 可以通过图像处理技术获取图像中包含的有用信息。 但是, 数字图像的数据量巨大。 一幅数字图像是由图像矩阵中的像 素(Pixel )组成的, 通常每个像素用红、 绿、 蓝三种颜 色表示, 每种颜色用8bit表示灰度级。 那么一幅1024×768 不经压缩的真彩色图像, 数据量达2.25 MB (1024×768×8×3/8), 一幅遥感图像的数据量达3240× 2340×4=30Mb 。 如此庞大的数据量给存储、 传输和处理 都带来巨大的困难。 如果再提高颜色位数及分辨率, 数据量 将大幅度增加。
[数字图像处理](一)彩色图像转灰度图像的三种方式与效果分析
彩色图像转灰度图像的三种方式与效果分析](https://img.taocdn.com/s3/m/a9ad791dbb1aa8114431b90d6c85ec3a87c28bdb.png)
[数字图像处理](⼀)彩⾊图像转灰度图像的三种⽅式与效果分析图像处理(⼀)彩⾊图⽚转灰度图⽚三种实现⽅式最⼤值法imMax=max(im(i,j,1),im(i,j,2),im(i,j,3))平均法imEva=im(i,j,1)3+im(i,j,2)3+im(i,j,3)3加权平均值法imKeyEva=0.2989×im(i,j,1)+0.5870×im(i,j,2)+0.1140×im(i,j,3)matlba实现clc;close all;clear all;% 相对路径读⼊图⽚(和代码在同⼀⽂件夹下)im = imread('p2.jpg');%---查看图⽚,检测是否成功读⼊% 对显⽰的图⽚进⾏排版subplot(2,3,4);imshow(im);% 对图⽚进⾏命名title('原图');[col,row,color] = size(im);%col为图⽚的⾏数,row为图⽚的列数,color对于彩⾊图⽚⼀般为3,每层对应RGB %利⽤matlab⾃带的函数进⾏ rgb_to_gray;im_matlab = rgb2gray(im);subplot(2,3,1);imshow(im_matlab);title('matlab⾃带rgb2gray');%--------------------------------------------------------%---⽤最⼤值法% 创建⼀个全为1的矩阵,长宽等同于原图的im_max = ones(col,row);for i = 1:1:colfor j = 1:1:rowim_max(i,j) = max( im(i,j,:) );endend% 将矩阵变为8byte⽆符号整型变量(不然⽆法显⽰图⽚)% 最好在计算操作结束后再变化,不然会有精度问题!!im_max = uint8(im_max);subplot(2,3,2);imshow(im_max);title('最⼤值法');%--------------------------------------------------------% 平均值法im_eva = ones(col,row);for i = 1:1:colfor j = 1:1:rowim_eva(i,j) = im(i,j,1)/3 + im(i,j,2)/3 + im(i,j,3)/3 ;% 两种的结果其实⼀样,但是如果先转换为uint8就会出现精度问题%sum1 = im(i,j,1)/3 + im(i,j,2)/3 + im(i,j,3)/3%sum2 = ( im(i,j,1) + im(i,j,2)+ im(i,j,3) )/3;%fprintf( " %.4f %.4f \n",sum1 ,sum2 ) ;endendim_eva = uint8(im_max);subplot(2,3,3);imshow(im_eva);title('平均值法');%--------------------------------------------------------% 加权平均法(rgb2gray所使⽤的权值)im_keyeva = ones(col,row);% 加权算法先转换为uint8计算效果更好im_keyeva = uint8(im_max);for i = 1:1:colfor j = 1:1:rowim_keyeva(i,j) = 0.2989*im(i,j,1) + 0.5870*im(i,j,2) + 0.1140*im(i,j,3) ;endendsubplot(2,3,5);imshow(im_keyeva);title('加权平均法');Processing math: 100%附matlab——rgb2gray源码function I = rgb2gray(X)%RGB2GRAY Convert RGB image or colormap to grayscale.% RGB2GRAY converts RGB images to grayscale by eliminating the% hue and saturation information while retaining the% luminance.%% I = RGB2GRAY(RGB) converts the truecolor image RGB to the% grayscale intensity image I.%% NEWMAP = RGB2GRAY(MAP) returns a grayscale colormap% equivalent to MAP.%% Class Support% -------------% If the input is an RGB image, it can be of any numeric type. The output% image I has the same class as the input image. If the input is a% colormap, the input and output colormaps are both of class double.%% Notes% -----% RGB2GRAY converts RGB values to grayscale values by forming a weighted % sum of the R, G, and B components:%% 0.2989 * R + 0.5870 * G + 0.1140 * B%% The coefficients used to calculate grayscale values in RGB2GRAY are% identical to those used to calculate luminance (E'y) in% Rec.ITU-R BT.601-7 after rounding to 3 decimal places.%% Rec.ITU-R BT.601-7 calculates E'y using the following formula:%% 0.299 * R + 0.587 * G + 0.114 * B%% Example% -------% I = imread('example.tif');%% J = rgb2gray(I);% figure, imshow(I), figure, imshow(J);%% indImage = load('clown');% gmap = rgb2gray(indImage.map);% figure, imshow(indImage.X,indImage.map), figure, imshow(indImage.X,gmap);%% See also RGB2IND, RGB2LIGHTNESS.% Copyright 1992-2020 The MathWorks, Inc.narginchk(1,1);isRGB = parse_inputs(X);if isRGBI = matlab.images.internal.rgb2gray(X);else% Color map% Calculate transformation matrixT = inv([1.0 0.956 0.621; 1.0 -0.272 -0.647; 1.0 -1.106 1.703]);coef = T(1,:);I = X * coef';I = min(max(I,0),1);I = repmat(I, [1 3]);end%--------------------------------------------------------------------------function is3D = parse_inputs(X)is3D = (ndims(X) == 3);if is3D% RGBif (size(X,3) ~= 3)error(message('MATLAB:images:rgb2gray:invalidInputSizeRGB'))end% RGB can be single, double, int8, uint8,% int16, uint16, int32, uint32, int64 or uint64validateattributes(X, {'numeric'}, {}, mfilename, 'RGB');elseif ismatrix(X)% MAPif (size(X,2) ~= 3 || size(X,1) < 1)error(message('MATLAB:images:rgb2gray:invalidSizeForColormap'))end% MAP must be doubleif ~isa(X,'double')error(message('MATLAB:images:rgb2gray:notAValidColormap'))endelseerror(message('MATLAB:images:rgb2gray:invalidInputSize'))end总结通过上⾯的代码结合实际的测试,果然,matlab⾃带的rgb2gray也就是加权平均的⽅法,对光线明暗的处理是最好的。
广东海洋大学授课计划表_数字图像处理-2015-1

2
图像处理概述
2
9.18
2
Matlab语言简介
3
9.23
2
实验1 Matlab基本运算
9.25
2
图像处理基本知识
4
9.30
2
实验2图像的基本操作
5
10.7
2
实验3图像的直方图处理
10.9
2
图像变换
6
10.14
2
实验4图像变换
10.16
2
图像编码与压缩
7
10.21
2
实验5图像压缩及编码
10.23
2015年9月2015年11月共12周第1页总1页课程名称数字图像处理课程编号16142104计划时数32学分2理论时数16实验时数16作业时数0其它采用教材数字图像处理出版社电子工业出版社出版时间2014编著者胡学龙统编自编统编使用层次本科年级4专业嵌入11211122所用教学大纲名称数字图像处理教学大纲周别及日期教学类别及内容必读书籍和参考书籍讲课实验课或习题学时主要内容学时主要内容11
2
图像增强及图像滤波
8
10.28
2
实验6图像增强及滤波
10.30
2
图像分割及边缘检测
9
11.4
2
2
实验7图像分割及边缘检测
11.6
2
彩色图像处理及图像处理应用实例
11.11
2
实验8彩色图像的处理
注:本教学日历若有变更,以实际授课为准,恕不另行通知。
填写时间:2015年8月30日任课教师签名:系(或教研室)主任签名:
广东海洋大学2015 — 2016学年第1学期授课计划表
任课教师:徐国保
大学数字图像处理模拟试卷及答案-(1)

(注:以下两套模拟题仅供题型参考,请重点关注选择填空以及判断题、名词解释,蓝色下划线内容肯定不考)《数字图像处理》模拟试卷(A 卷)一、单项选择题(从下列各题四个备选答案中选出一个正确答案,并将其代号填在题前的括号内。
答案选错或未作选择者,该题不得分。
每小题1分,共10分)( d )1.一幅灰度级均匀分布的图象,其灰度范围在[0,255],则该图象的信息量为:a. 0b.255c.6d.8( b )2.图象与灰度直方图间的对应关系是:a.一一对应b.多对一c.一对多d.都不对( d )3.下列算法中属于局部处理的是:a.灰度线性变换b.二值化c.傅立叶变换d.中值滤波( b )4.下列算法中属于点处理的是:a.梯度锐化b.二值化c.傅立叶变换d.中值滤波( ) 5.一曲线的方向链码为12345,则曲线的长度为a.5b.4c.5.83d.6.24( c )6. 下列算法中属于图象平滑处理的是:a.梯度锐化b.直方图均衡c. 中值滤波placian增强( )7.下列图象边缘检测算子中抗噪性能最好的是:a.梯度算子b.Prewitt算子c.Roberts算子d. Laplacian算子( c)8.采用模板[-1 1]主要检测____方向的边缘。
a.水平b.45°c.垂直d.135°( d )9.二值图象中分支点的连接数为:a.0b.1c.2d.3( a )10.对一幅100´100像元的图象,若每像元用8bit表示其灰度值,经霍夫曼编码后压缩图象的数据量为40000bit,则图象的压缩比为:a.2:1b.3:1c.4:1d.1:2二、填空题(每空1分,共15分)1.图像锐化除了在空间域进行外,也可在频率域进行。
2.图像处理中常用的两种邻域是4-邻域和8-邻域。
3.直方图修正法包括直方图均衡和直方图规定化两种方法。
4.常用的灰度差值法有最近邻元法、双线性内插法和三次内插法。
数字图像处理习题(1)

一、判断题(10分)(正确√,错误×)1.图像处理就是对图像信息进行加工处理,以满足人的视觉心理和实际应用的要求(√)2.在MATLAB中,uint8是无符号8位整数(√)3.在MATLAB中,uint16是无符号16位整数(√)4.图像的点运算与代数运算不相同(√)5.点运算也叫灰度级变换(√)6.线性点运算可以改变数字图像的对比度(√)7.图像的几何变换也叫图像的点运算(×)8.图像的平滑操作实际上是邻域操作(√)9.傅立叶变换后的矩阵处在频域上(√)10.傅立叶变换后的矩阵处在空域上(×)11.傅立叶变换,人们可以在空域和频域中同时思考问题(√)12.像素深度是指存储每个像素所用的位数(√)13.图像经过变换后,图像的大部分能量都集中在中、高频段(×)14.图像经过变换后,图像的大部分能量都集中在低频段(√)15.直方图均衡化也是一种非线性点运算(√)16.仿射变换是空间变换(√)17.空间变换是频域变换(×)18.边缘检测是将边缘像元标识出来的一种图像分割技术(√)19.灰度直方图能反映一幅图像各灰度级像元占图像的面积比(√)20.直方图均衡是一种点运算,图像的二值化则是一种局部运算(×)21.双边滤波法可用于边缘增强(×)22.均值平滑滤波器可用于锐化图像边缘(×)23.拉普拉斯算子可用于图像的平滑处理(×)24.高频加强滤波器可以有效增强图像边缘和灰度平滑区的对比度(√)25.应用傅立叶变换的可分离性可以将图像的二维变换分解为行和列方向的一维变换(√)26.图像分割可以依据图像的灰度、颜色、纹理等特性来进行(√)27.图像增强有空域和变换域两类(√)28.加大、减小对比度分别会使图像发生亮处更亮,暗处更暗的直观变化(√)29.加大、减小亮度分别会使图像发生亮处更亮,暗处更暗的直观变化(×)30.二值图像就是只有黑白两个灰度级(√)31.一般来说,图像采样间距越大,图像数据量越大,质量越好;反之亦然(×)32.用Matlab开辟一个图像窗口的命令是imshow(×)33.图像尺寸为400*300是指图像的宽为400毫米,高为300毫米(×)34.一般而言,对于椒盐噪声,均值滤波的效果好于中值滤波(×)35.与高斯低通滤波器相比,理想低通滤波低通滤波器在图像处理过程中更容易出现振铃(rings)(√)二、填空题(20分,1分/空)1.一般来说,图像采样间距越小,图像数据量_____,质量_____;反之亦然(大,高)2.若采样4个数,大小分别为4.56 0.23 7.94 16.55。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一
实验内容和步骤
练习图像的读取、显示和保存图像数据,步骤如下:
(1)使用命令figure(1)开辟一个显示窗口
(2)读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内显
示、二值图像和灰度图像,注上文字标题。
(3)保存转换后的灰度图像和二值图像
(4)在同一个窗口显示转换后的灰度图像的直方图
I=imread('BaboonRGB.bmp');
figure,imshow(I);
I_gray=rgb2gray(I);
figure,imshow(I_gray);
I_2bw=Im2bw(I_gray);
figure,imshow(I_2bw);
subplot(1,3,1),imshow(I),title('RGB图像');
subplot(1,3,2),imshow(I_gray),title('灰度图像');
subplot(1,3,3),imshow(I_2bw),title('二值图像');
imwrite(I_gray,'Baboongray.png');
imwrite(I_2bw,'Baboon2bw.tif');
figure;imhist(I_gray);
RGB图像灰度图像
二值图像
050100150200250
0
500
1000
1500
2000
2500
3000
(5)将原RGB图像的R、G、B三个分量图像显示在figure(2)中,观察对比它们的
特点,体会不同颜色所对应的R、G、B分量的不同之处。
[A_RGB,MAP]=imread('BaboonRGB.bmp');
subplot(2,2,1),imshow(A_RGB),title('RGB');
subplot(2,2,2),imshow(A_RGB(:,:,1)),title('R');
subplot(2,2,3),imshow(A_RGB(:,:,2)),title('G');
subplot(2,2,4),imshow(A_RGB(:,:,3)),title('B');
(6)将图像放大1.5倍,插值方法使用三种不同方法,在figure(3)中显示放大后的
图像,比较不同插值方法的结果有什么不同。将图像放大到其它倍数,重复实验;
A=imread('BaboonRGB.bmp');
figure(3),imshow(A),title('原图像');
B=imresize(A,1.5,'nearest');
figure(4),imshow(B),title('最邻近法')
C=imresize(A,1.5,'bilinear'); ;
figure(5),imshow(C),title('双线性插值');
D=imresize(A,1.5,'bicubic');
figure(6),imshow(D),title('双三次插值');
RGBR
GB
(7)图像顺时针旋转30度,插值方法使用三种不同方法,在figure(3)中显示旋
转后的图像并比较结果有什么不同。
A=imread('BaboonRGB.bmp');
figure(3),imshow(A),title('原图像');
B=imrotate(A,-30,'nearest');
figure(4),imshow(B),title('最邻近法')
C=imrotate(A,-30,'bilinear'); ;
figure(5),imshow(C),title('双线性插值');
D=imrotate(A,-30,'bicubic');
figure(6),imshow(D),title('双三次插值');