数字图像处理及MATLAB实现

合集下载

数字图像处理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实现源代码【1】

数字图像处理及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);。

数字图像处理在MATLAB中的应用实例

数字图像处理在MATLAB中的应用实例

数字图像处理在MATLAB中的应用实例数字图像处理是计算机科学和工程中一个重要的领域,它涉及图像获取、图像处理、图像分析和图像显示等方面。

近年来,随着计算机技术的迅猛发展,数字图像处理在各个领域得到了广泛的应用。

本文将以MATLAB为工具,介绍数字图像处理在实际应用中的一些例子,并探讨其中的算法和原理。

首先,我们将从图像滤波的应用例子开始。

图像滤波是指对图像中的噪声进行抑制或者对图像进行平滑处理的方法。

在MATLAB中,有多种滤波器可以使用,例如均值滤波器、中值滤波器和高斯滤波器等。

在医学影像处理中,图像滤波经常用于增强图像的质量,减少噪声的干扰。

在这里,我们以平滑算法为例,介绍如何使用MATLAB进行图像滤波。

平滑算法是一种常用的图像处理技术,它通过利用像素点周围邻域像素的灰度值来估计该像素点的灰度值,从而达到平滑图像的效果。

在MATLAB中,可以使用conv2函数来实现平滑滤波。

下面是一个简单的示例代码:```I = imread('image.jpg');h = ones(5,5)/25;I_smooth = conv2(I, h, 'same');imshow(I_smooth);```其中,I是输入的图像,h是一个5x5的平滑滤波器,I_smooth是滤波后的图像。

通过改变滤波器的大小和权重,可以得到不同程度的平滑效果。

除了图像滤波,数字图像处理还有许多其他的应用。

例如,图像分割是将图像分成不同的区域,以便更好地分析和理解图像内容。

在MATLAB中,有许多图像分割的算法可以使用,如基于阈值的分割、基于边缘的分割和基于区域的分割等。

以下是一个应用基于阈值的分割算法的示例代码:```I = imread('image.jpg');I_gray = rgb2gray(I);level = graythresh(I_gray);BW = imbinarize(I_gray, level);imshow(BW);```在这个例子中,首先将彩色图像转换为灰度图像,然后使用graythresh函数自动计算一个合适的阈值,最后使用imbinarize函数将图像二值化,并显示分割结果。

在Matlab中进行数字图像处理与特征提取

在Matlab中进行数字图像处理与特征提取

在Matlab中进行数字图像处理与特征提取数字图像处理是一种通过使用计算机算法对图像进行处理和分析的技术。

在现代科学和技术中,数字图像处理具有广泛的应用,包括医学影像、遥感图像、计算机视觉等。

Matlab是一个功能强大且广泛使用的数值计算和绘图环境,也是数字图像处理和特征提取的理想工具。

Matlab提供了丰富的函数和工具箱,可用于各种图像处理任务,例如滤波、边缘检测、图像增强、图像分割等。

在数字图像处理中,最基本的操作之一是图像滤波。

滤波可以通过不同的滤波器来增强或降低图像的某些特征。

在Matlab中,可以使用imfilter函数来实现各种滤波器,例如高斯滤波器、中值滤波器等。

这些滤波器可以消除噪声、平滑图像或者突出图像的某些细节。

边缘检测是数字图像处理的另一个重要任务。

边缘检测可以帮助我们找到图像中的物体边界或者纹理变化。

在Matlab中,常用的边缘检测算法有Sobel算子、Canny算子等。

这些算法可以根据图像的梯度变化来检测边缘,并生成二值化的边缘图像。

除了滤波和边缘检测,图像增强也是数字图像处理领域的一个重要任务。

图像增强可以通过增加图像的对比度、调整亮度或者变化色彩来改善图像的视觉效果。

在Matlab中,我们可以使用imadjust函数来进行图像增强。

该函数可以通过调整图像的灰度级别来增加图像的对比度,并改善图像的细节。

图像分割是数字图像处理中的一个挑战性任务。

图像分割可以将图像分成若干个子区域,每个子区域代表不同的对象或者纹理。

在Matlab中,常用的图像分割算法有阈值法、区域生长法、基于边缘的分割等。

这些算法可以根据图像的灰度级别、像素关系或者纹理特征来将图像分割成不同的区域。

除了数字图像处理,特征提取也是图像处理中的一个重要任务。

特征提取可以从图像中提取出有用的信息,用于分类、识别或者分析任务。

在Matlab中,可以使用各种特征提取算法,例如局部二值模式(LBP)、灰度共生矩阵(GLCM)、主成分分析(PCA)等。

数字图像处理及matlab实现

数字图像处理及matlab实现

THANKS
05 数字图像处理的应用案例
医学影像处理
1 2 3
医学影像诊断
数字图像处理技术可以用于医学影像的预处理、 增强、分割和识别,帮助医生更准确地诊断疾病。
医学图像重建
通过数字图像处理技术,可以从低质量的医学图 像中重建出高质量的图像,提高医学影像的清晰 度和诊断价值。
医学图像配准与融合
数字图像处理技术可以实现不同模态医学图像之 间的配准与融合,提供更全面的医学信息。
离散余弦变换
将图像从空间域转换到余弦函数构成的系数矩阵,用于数据压缩 和去噪。
Matlab中的图像恢复实现
超分辨率
通过多幅低分辨率图像合成一幅高分辨率图 像,提高图像的分辨率。
去噪
利用各种滤波技术去除图像中的噪声,恢复 原始图像。
失真校正
对由于拍摄、传输等原因造成的图像失真进 行校正,提高图像质量。
数字图像处理及 Matlab实现
目录
Contents
• 数字图像处理基础 • Matlab基础 • 数字图像处理技术 • Matlab在数字图像处理中的应用 • 数字图像处理的应用案例
01 数字图像处理基础
图像的数字化
总结词
将连续的图像转化为离散的像素点阵列。
详细描述
通过将连续的图像转化为离散的像素点阵列,数字图像处理能够将图像信息转 化为计算机能够处理的数字信息。每个像素点由其位置和灰度值表示,形成数 字图像。
图像的灰度级别
总结词
描述像素的亮度级别。
详细描述
图像的灰度级别决定了像素的亮度范围。灰度级别越高,图像的亮度范围越丰富, 细节表现力越强。常见的灰度级别有256级(0-255)和16级(0-15)。

(完整版)数字图像处理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命令窗口中输入相应程序。

基于MATLAB的数字图像处理的设计与实现

基于MATLAB的数字图像处理的设计与实现

基于MATLAB的数字图像处理的设计与实现摘要数字图像处理是一门新兴技术,随着计算机硬件的发展,数字图像的实时处理已经成可能,由于数字图像处理的各种算法的出现,使得其处理速度越来越快,能更好的为人们服务。

数字图像处理是一种通过计算机采用一定的算法对图形图像进行处理的技术。

目的:改善医学图像质量,使图像得到增强。

方法:利用Matlab工具箱函数,采用灰度直方图均衡化和高通滤波的方法对一幅X线图像进行增强处理。

结果:用直方图均衡化的算法,将原始图像密集的灰度分布变得比较稀疏,处理后的图像视觉效果得以改善。

高通滤波对于局部细节增强显著,高通滤波后使不易观察到的细节变得清晰。

结论:使用Matlab工具箱大大简化了编程工作,为医学图像处理提供了一种技术平台。

经过直方图均衡化和高通滤波处理后的医学图像,视觉效果得到改善。

关键词:MATLAB;直方图均衡化;高通滤波;图像增强AbstractDigital image processing is an emerging technology, with the development of computer hardware, real—time digital image processing has become possible due to digital image processing algorithms to appear,making it faster and faster processing speed,better for people services .Digital image processing is used by some algorithms computer graphics image pro cessing technology. Objective:To improve the quality of medical image by enhancing the details。

基于MATLAB数字图像处理的实现和仿真(完整版)

基于MATLAB数字图像处理的实现和仿真(完整版)

通信专业课程设计一太原科技大学课程设计(论文)设计(论文)题目:基于MATLAB数字图像处理的实现和仿真姓名学号班级学院指导教师2010年12月31日太原科技大学课程设计(论文)任务书学院(直属系):华科学院电子信息工程系时间:2010年12月17日学生姓名指导教师设计(论文)题目基于MATLAB数字图像处理的实现和仿真主要研究内容学习MATLAB GUI程序设计,利用MATLAB图像处理工具箱,设计和实现自己的Photoshop。

按照软件工程方法,根据需求进行程序的功能分析和界面设计,给出设计详细说明。

然后按照拟定的功能要求进行程序设计和调试。

研究方法主要运用MATLAB工具箱对图像进行处理和分析,通过编写程序实现对数字图像的处理。

主要技术指标(或研究目标)综合运用MATLAB工具箱实现图像处理的GUI程序设计。

教研室意见教研室主任(专业负责人)签字:年月日目录摘要 (II)第1章绪论 (1)第2章数字图像处理系统设计 (2)2.1设计概括 (2)2.2文件 (3)2.2.1打开 (3)2.2.2保存 (3)2.2.3退出 (3)2.3编辑 (3)2.3.1灰度 (3)2.3.2亮度 (5)2.3.3截图 (7)2.3.4缩放 (7)2.4旋转 (9)2.4.1上下翻转 (9)2.4.2左右翻转 (10)2.4.3任意角度翻转 (11)2.5噪声 (12)2.6滤波 (13)2.6.1中值滤波 (13)2.6.2自适应滤波 (13)2.6.3平滑滤波 (14)2.7直方图统计 (15)2.8频谱分析 (16)2.8.1、频谱图 (16)2.8.2通过高通滤波器 (17)2.8.3通过低通滤波器 (18)2.9灰度图像处理 (19)2.9.1二值图像 (19)2.9.2创建索引图像 (20)2.10颜色模型转换 (21)2.11操作界面设计 (22)第3章程序调试及结果分析 (23)总结 (24)参考文献 (25)附录 (26)基于MATLAB数字图像处理的实现和仿真摘要数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。

数字图像处理及MATLAB实现[杨杰][电子教案]第二章

数字图像处理及MATLAB实现[杨杰][电子教案]第二章

距离 像素之间的联系常与像素在空间的接近程度有 关。像素在空间的接近程度可以用像素之间的距 离来度量。为测量距离需要定义距离度量函数。 给定 p, q, r 三个像素,其坐标分别为 ( x, y ), ( s, t ), (u , v) 如果 1) D ( p, q ) ≥ 0( D ( p, q ) = 0 当且仅当 p = q ) 2) D ( p, q ) = D ( q, p ) 3) D ( p, r ) ≤ D ( p, q ) = D (q, r ) 则 D是距离函数或度量。
p 和 q 之间的欧式距离定义为:
De ( p, q) = ( x − s)2 + ( y − t )2
p 和 q 之间的 D4距离(也叫城市街区距离)定义为:
D4 ( p , q ) = x-s + y-t
p 和 q 之间的 D8 距离(也叫棋盘距离)定义为:
D8 ( p, q )=max( x-s , ) y-t
图像获取即图像的数字化过程,包括扫描、 图像获取即图像的数字化过程,包括扫描、 采样和量化。 采样和量化。 图像获取设备由5个部分组成 采样孔, 个部分组成: 图像获取设备由 个部分组成:采样孔, 扫描机构,光传感器, 扫描机构,光传感器,量化器和输出存储 体。 关键技术有:采样——成像技术;量化 成像技术; 关键技术有:采样 成像技术 量化— —模数转换技术。 模数转换技术。 模数转换技术
Sampling
图像的采样
图2.15图像的采样示例 图像的采样示例
Quantization 图像的量化
图2.16图像的量化示例 图像的量化示例
量化等级越多,所得图像层次越丰富, 量化等级越多,所得图像层次越丰富,灰度 分辨率高,图像质量好,但数据量大; 分辨率高,,图像层次欠丰富,灰度分辨 量化等级越少,图像层次欠丰富, 率低,会出现假轮廓现象,图像质量变差, 率低,会出现假轮廓现象,图像质量变差, 但数据量小. 但数据量小

《数字图像处理及MATLAB实现》图像增强与平滑实验

《数字图像处理及MATLAB实现》图像增强与平滑实验

《数字图像处理及MATLAB实现》图像增强与平滑实验一.实验目的及要求1、熟悉并掌握MA TLAB 图像处理工具箱的使用;2、理解并掌握常用的图像的增强技术。

二、实验设备MATLAB 6.5 以上版本、WIN XP 或WIN2000 计算机三、实验内容(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。

熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。

(可将每段程序保存为一个.m文件)1.直方图均衡化clear all; close all % Clear the MATLAB workspace of any variables% and close open figure windows.I = imread('pout.tif'); % Reads the sample images ‘pout.tif’, and stores it inimshow(I) % an array named I.display the imagetext(60,20,'李荣桉1909290239','horiz','center','color','r')figure, imhist(I) % Create a histogram of the image and display it in% a new figure window.[I2,T] = histeq(I); % Histogram equalization.figure, imshow(I2) % Display the new equalized image, I2, in a new figure window.text(60,20,'李荣桉1909290239','horiz','center','color','r')figure, imhist(I2) % Create a histogram of the equalized image I2.figure,plot((0:255)/255,T); % plot the transformation curve.imwrite (I2, 'pout2.png'); % Write the newly adjusted image I2 to a disk file named% ‘pout2.png’.imfinfo('pout2.png') % Check the contents of the newly written file2.直接灰度变换clear all; close allI = imread('cameraman.tif'); 注意:imadjust()功能:调整图像灰度值或颜色映像表,也可实现伽马校正。

数字图像处理及MATLAB实现4

数字图像处理及MATLAB实现4

数字图像处理及MATLAB实现4武汉理工大学信息学院第4章图像变换(ImageTranform)4.1连续傅里叶变换4.2离散傅里叶变换4.3快速傅里叶变换4.4傅里叶变换的性质4.5图像傅里叶变换实例4.6其他离散变换一、图象变换的引入1.方法:对图象信息进行变换,使能量保持但重新分配。

2.目的:有利于加工、处理[滤除不必要信息(如噪声),加强/提取感兴趣的部分或特征]。

二、方法分类可分离、正交变换:2D-DFT,2D-DCT,2D-DHT,2D-DWT三、用途1.提取图象特征(如):(1)直流分量:f(某,y)的平均值=F(0,0);(2)目标物边缘:F(u,v)高频分量。

2.图像压缩:正交变换能量集中,对集中(小)部分进行编码。

3.图象增强:低通滤波,平滑噪声;高通滤波,锐化边缘。

4.1连续傅里叶变换(ContinuouFourierTranform)1、一维傅立叶变换及其反变换::1F(u)f(某)ej2u某d某f(某)F(u)ej2u某du4.1.1连续傅里叶变换的定义(DefinitionofContinuouFourierTranform)这里f某是实函数,它的傅里叶变换Fu通F常是复函数。

u的实部、虚部、振幅、能量和相位分别表示如下:实部Ruftco2utdt(4.3)虚部Iuftin2utdt(4.4)振幅1FuR2uI2u2(4.5)4.1.1连续傅里叶变换的定义(DefinitionofContinuouFourierTranform)能量相位EuFuR2uI2u2(4.6)(4.7)傅里叶变换可以很容易推广到二维的情形。

设函数f某,y是连续可积的,且fu,v可积,则存在如下的傅里叶变换对:IuuarctanRu4.1连续傅里叶变换的定义(DefinitionofContinuouFourierTranform)Ff(某,y)F(u,v)f(某,y)ej2u某vyd某dy(4.8)F1F(u,v)f(某,y)F(u,v)ej2u某vydudv(4.9)式中u、v是频率变量。

MATLAB实验Matlab在数字图像处理中的应用

MATLAB实验Matlab在数字图像处理中的应用

MATLAB实验Matlab在数字图像处理中的应用实验十 Matlab在数字图像处理中的应用(基础篇)一、实验目的1(熟悉图像的四种类型。

2(熟练掌握图像的读、写操作以及显示方法。

3. 熟悉图像的类型转换以及格式转换。

二、实验原理1. 图像的表示以及数字化广义的图像是指视觉信息。

举凡照片、图画、电视画面以及由透镜、光栅及全息图所构成的光学成像等均属之。

我们观察一幅单色静止图像,其亮度的明暗变化就构成图像视觉。

所以,一幅单色(monochrome)静止的图像可以表示为强度或亮度的二维分布,其中F代表图像亮度或者强度,(x,y)是二维平面点坐标。

对于黑白图像,通常Fxy(,)用不同的灰度级来表示其亮度的差异;对于彩色图像,可以视为由单个单色的二维图像组合形成的。

例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)按不同的比例组成的。

因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。

此时,每一幅分量图像只有亮度的二维分布,如图1所示。

通常我们看到的图像是一幅亮度在空间连续变化的模拟图像(即图像关于亮度F 以及空间坐标x,y连续)。

例如在显微镜下看到的就是一副光学模拟图像。

连续的模拟图像经过离散化处理后变成计算机能够识别的点阵图像,称为数字图像。

把模拟图像转换成数字图像其实就是数字化 (即离散化)图像亮度F以及空间坐标x,y。

将坐标数字化称为取样;将亮度数字化称为量化。

采样和量化的过程如图2所示。

二维图像平面经过数字化后,变成一个个方形的像素(pixel),亮度数字化之后变成一个二维的数值矩阵。

所以一副数字图像对应于一个数值矩阵,该矩阵通常称为图像的数据矩阵。

图像数据矩阵的大小即是图像像素的数目,矩阵的行与列决定一个像素点,矩阵元素值(也称像素值)反映该像素点的灰度。

例如图2右边所示的图像数据矩阵为8×8的二维矩阵,那么该数字图像包含8×8=64个像素,第一行第一列代表第一个像素,其像素值(元素值)1表达该像素的灰度。

数字图像处理与MATLAB实现

数字图像处理与MATLAB实现

MATLAB数字图像处理i概述BW=dither (I)灰度转成二值图;X=dither(RGB,map)RGB转成灰度图,用户需要提供一个Colormap;[X,map]=gray2ind(I,n)灰度到索引;[X,map]=gray2ind(BW,n)二值图到索引,map可由gray(n)产生。

灰度图n默认64, 二值图默认2;X=graylice(I,n)灰度图到索引图,门限l/n,2/n,---,(n-l)/n, X=graylice(I,v)给定门限向量v;BW=im2bw(I,level)灰度图I 到二值图;BW=im2bw(X,map,level)索引图X到二值图;level是阈值门限,超过像素为1,其余直0, level在[0,1]之间。

BW=im2bw(RGB,level)RGB 到二值图;I=ind2gray(X,map)索引图到灰度图;RGB=ind2rgb(X,map)索引图到RGB;I=rgb2gray(RGB)RGB 到灰度图。

2图像运算2.1图像的读写MATLAB 支持的图像格式有bmp,gif,icojpg,png,cur, pcx,xwd 和tif c 读取(imread):[1]A=imread(filename,fmt)[2][X,map]=imread(filename,fmt)[3][ - • ^imreadtfilename)⑷[…]=imwad(URL,…)说明:filename是图像文件名,如果不在搜索路径下应是图像的全路径,fmt是图像文件扩展名字符串。

前者可读入二值图、灰度图、彩图(主要是RGB);第二个读入索引图, map为索引图对应的Color map,即其相关联的颜色映射表,若不是索引图则map为空。

URL表示引自Intemet URL中的图像。

写入(imwrite):[1]R=imwrite(A,filename,fmt);[2]R=imwrite(X,map,filename,fmt);[3]R=imwrite(…,filename);[4]R=imwrite(…,Param 1,Vai 1 ,Param2,Val2)说明:针对第四个,该语句用干指定HDF,JPEG,PBM,PGM,PNG,PPM,TIFF等类型输出文件的不同参数。

基于MATLAB的图像处理算法优化与实现

基于MATLAB的图像处理算法优化与实现

基于MATLAB的图像处理算法优化与实现图像处理是计算机视觉领域中的重要研究方向,而MATLAB作为一种强大的科学计算软件,被广泛应用于图像处理算法的设计、优化和实现。

本文将探讨基于MATLAB的图像处理算法优化与实现的相关内容,包括算法原理、优化方法和实际案例分析。

1. 图像处理算法概述图像处理算法是对数字图像进行操作以获取所需信息或改善图像质量的方法。

常见的图像处理算法包括滤波、边缘检测、分割、特征提取等。

在MATLAB中,这些算法通常通过调用内置函数或自定义函数来实现。

2. MATLAB在图像处理中的应用MATLAB提供了丰富的图像处理工具箱,包括各种函数和工具,可以方便地进行图像读取、显示、处理和分析。

通过MATLAB,用户可以快速实现各种图像处理算法,并进行可视化展示。

3. 图像处理算法优化3.1 算法效率优化在实际应用中,图像处理算法的效率往往是一个重要考量因素。

通过对算法进行优化,可以提高算法的执行速度和性能表现。

在MATLAB中,可以通过向量化编程、并行计算等方式对图像处理算法进行效率优化。

3.2 算法精度优化除了效率外,算法的精度也是优化的重点之一。

通过调整参数、改进算法逻辑等方式,可以提高图像处理算法的准确性和稳定性。

在MATLAB中,可以通过调试代码、对比实验等方法对算法进行精度优化。

4. 实例分析:图像去噪算法优化以图像去噪算法为例,介绍如何基于MATLAB进行图像处理算法的优化与实现。

4.1 算法原理图像去噪是图像处理中常见问题之一,常用的去噪方法包括均值滤波、中值滤波、小波变换等。

这里以均值滤波为例,介绍其原理:对每个像素点周围邻域内的像素值取平均值来代替该像素值,从而达到去除噪声的目的。

4.2 算法优化在MATLAB中实现均值滤波算法时,可以通过矩阵运算来提高计算效率;同时可以调整滤波窗口大小和权重系数来优化去噪效果;还可以结合其他滤波方法进行组合优化,如联合使用中值滤波和小波变换等。

数字图像处理及MATLAB实现PPT课件

数字图像处理及MATLAB实现PPT课件
第12页/共69页
8.3.2梯度图像二值化
• 如果用适中的阈值对一幅梯度图像进行二值化,Kirsch的分割法利用了这种现象。 • 算法步骤 • 用一个中偏低的灰度阈值对梯度图像进行二值化从而检测出物体和背景,物体与背景被处于阈值之上的边
界点带分开。随着阈值逐渐提高,就引起物体和背景的同时增长。当它们接触上而又不至于合并时,可用 接触点来定义边界。这是分水岭算法在梯度图像中的应用。
OTSU算法定义:该算法是在灰度直方图的基础上用最小二乘法原理推导出来的, 具有统计意义上的最佳分割阈值。
第8页/共69页
• OTSU基本原理:以最佳阈值将图像的灰度直方图分割成两部分,是两部分之 间的方差取最大值,即分离性最大。
第9页/共69页
3. 迭代法求阈值
原理:图像中前景与背景之间的灰度分布为相互不重叠,在该前提下,实现对 两类对象的阈值分割方法。
除非图像中的物体有陡峭的边沿,否则灰度阈值的取值对所抽取物体的边界的 定位和整体的尺寸有很大的影响。这意味着后续的尺寸(特别是面积)的测量 对于灰度阈值的选择很敏感。由于这个原因,我们需要一个最佳的,或至少是 具有一致性的方法确定阈值。
第5页/共69页
1.直方图技术
• 含有一个与背景明显对比的物体的图像其有包含双峰的灰度直方图
第21页/共69页
Sobel边缘算子图
第22页/共69页
Prewitt边缘算子
Prewitr边缘算子 第23页/共69页
Kirsch边缘算子
图像中的每个点均与这8个模板进行卷积,每个掩模对某个特定边缘方向作出最大响应。所有8个方向中的 最大值作为边缘幅度图像的输出。最大响应掩模的序号构成了对边缘方向的编码。 Kirsch算子的梯度幅度值

《数字图像处理与机器视觉——基于MATLAB实现》读书笔记模板

《数字图像处理与机器视觉——基于MATLAB实现》读书笔记模板

习题
8.1彩色图像基础
8.1.1彩色的定义 8.1.2彩色的物理认识 8.1.3三原色 8.1.4计算机中的颜色表示
8.2彩色图像的表示
8.2.1 RGB模型 8.2.2 MATLAB实现 8.2.3 HSV彩色模型 8.2.4 HSI模型 8.2.5 Lab模型
8.3彩色图处理基础
8.3.1图像的伪彩色处理 8.3.2全彩色图像处理基础
3.5灰度直方图
3.5.1灰度直方图的绘制 3.5.2灰度直方图的使用
3.6图像的分类
3.6.1二值图像 3.6.2灰度图像 3.6.3彩色图像 3.6.4矢量图 3.6.5索引图像
4.1概述 4.2点运算
4.3代数运算 4.4逻辑运算
本章小结
4.5几何运算
习题
4.2点运算
4.2.1线性点运算 4.2.2非线性点运算
10.4车牌识别实例
10.4.1车牌图像数据特征分析(民用汽车) 10.4.2车牌号码识别系统设计 10.4.3读入图像 10.4.4图像预处理 10.4.5车牌定位 10.4.6车牌区域处理 10.4.7字符分割 10.4.8车牌识别 10.4.9字符分割函数
1
11.1引言
2
11.2低级文件 I/O操作
4.3代数运算
4.3.1加法运算 4.3.2减法运算 4.3.3乘法运算 4.3.4除法运算
4.5几何运算
4.5.1图像的平移 4.5.2图像的镜像 4.5.3图像的旋转 4.5.4图像的缩放 4.5.5灰度插值
5.2快速傅里叶变 换
5.1认识傅里叶变 换
5.3傅里叶变换的 性质
本章小结
习题
11.5 GUI工具深入
11.5.1 GUI中的M文件 11.5.2回调函数 11.5.3 GUI跨平台的兼容性设计 11.5.4触控按钮 11.5.5静态文本 11.5.6切换按钮 11.5.7滑动条 11.5.8单选按钮 11.5.9可编辑文本
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MATLAB数字图像处理1 概述BW=dither(I)灰度转成二值图;X=dither(RGB,map)RGB转成灰度图,用户需要提供一个Colormap;[X,map]=gray2ind(I,n)灰度到索引;[X,map]=gray2ind(BW,n)二值图到索引,map可由gray(n)产生。

灰度图n默认64,二值图默认2;X=graylice(I,n)灰度图到索引图,门限1/n,2/n,…,(n-1)/n,X=graylice(I,v)给定门限向量v;BW=im2bw(I,level)灰度图I到二值图;BW=im2bw(X,map,level)索引图X到二值图;level是阈值门限,超过像素为1,其余置0,level在[0,1]之间。

BW=im2bw(RGB,level)RGB到二值图;I=ind2gray(X,map)索引图到灰度图;RGB=ind2rgb(X,map)索引图到RGB;I=rgb2gray(RGB)RGB到灰度图。

2 图像运算2.1 图像的读写MATLAB支持的图像格式有bmp,gif,ico,jpg,png,cur,pcx,xwd和tif。

读取(imread):[1] A=imread(filename,fmt)[2] [X,map]=imread(filename,fmt)[3] […]=imread(filename)[4] […]=imread(URL,…)说明:filename是图像文件名,如果不在搜索路径下应是图像的全路径,fmt是图像文件扩展名字符串。

前者可读入二值图、灰度图、彩图(主要是RGB);第二个读入索引图,map 为索引图对应的Colormap,即其相关联的颜色映射表,若不是索引图则map为空。

URL表示引自Internet URL中的图像。

写入(imwrite):[1] R=imwrite(A,filename,fmt);[2] R=imwrite(X,map,filename,fmt);[3] R=imwrite(…,filename);[4] R=imwrite(…,Param1,V al1,Param2,Val2)说明:针对第四个,该语句用于指定HDF,JPEG,PBM,PGM,PNG,PPM,TIFF等类型输出文件的不同参数。

例如HDF的Quality,Compression,WriteMode;JPEG的BitDepth,Comment:Empty or not,Mode:lossy or lossless,Quality等。

2.2 图像的显示方法1:使用Image Viewer(图像浏览器),即运用imview函数。

同时显示多帧图像的所有帧,可用到montage函数。

改变显示大小:imview (X,map,’IntialMagnificatition ’,’fit ’), IntialMagnificatition 默认值为100,即100%显示,设置为fit 则全屏显示。

关闭:imview close all 。

Image Viewer 还提供了三个工具:全景查看窗口(导航功能)、像素区域工具、图像信息窗口。

方法2:使用图形图像视窗,即运用imshow 函数。

调用truesize 函数来设定图像到屏幕像点的映射关系。

可以运用getimage 函数来将当前显示的图像赋值给一个变量。

调用格式:[1] imshow(I,n);\\n 为灰度级[2] imshow(I,[low,high]);\\指定I 的数据范围[3] imshow(BW);\\显示二值图像BW ,0为黑色,1为白色 [4] imshow(X,map);\\索引图像 [5] imshow(RGB);[6] imshow(…,display_option);\\显示图像的方式,选择‘notruesize ’或者‘turesize ’ [7] imshow(x,y,A,…);\\x,y 建立非默认的空间坐标系统 [8] imshow filename;[9] h=imshow(…)\\h 表示被显示图像的句柄2.3 图像的代数运算[1] 相加(imadd ): Z=imadd(X,Y)\\存为8位;Z=imadd(X,Y,’uint 16’)\\存为16位。

[2] 求补(imcomplement ): IM2=imcomplement(IM1)。

[3] 减法(imsubtract 或者imabsdiff ): Z=imsubtract(X,Y)\\差值结果小于0的赋值为0; Z=imabsdiff(X,Y)\\ 差值结果取绝对值。

[4] 乘法(immultiply ): Z=immultiply(X,Y)。

[5] 除法(imdivide ): Z=imdivide(X,Y)。

2.4 点运算灰度变换函数GST :B(x,y)=f[A(x,y)]。

其中有:[1]线性点运算B ()f A A αβ==+; [2]非线性点运算; [3]直方图修正。

2.5 图像的集合运算改变大小imresize :Y=imresize(X,M,method),其中M 为放大的倍数,method 有如下几种插值方式nearest ,bilinear ,bicubic 。

也可以规定输出图像大小,[heng,zong]。

图像旋转imrotate:Y=imrotate(X,angle,method,’crop’),angle表示逆时针旋转,method 同imresize的用法,crop表示将旋转以后的图像取与原图像大小相同的中心部分取出。

比例缩放imresize:同改变大小。

空间变换imtransform:B=imtransform(A,TFORM,param1,val1,param2,val2),其中TFORM为makeform或者cp2tform产生的结果。

如TFORM=makeform(transformtype,…),makereample,tformarray,imtransform等。

2.6 图像的领域和块操作领域操作分为滑动领域和分离领域两类。

滑动领域函数nlfilter,用法如下:[1] B=nlfilter(A,[m n],fun)\\[m n]表示滑动领域m*n,fun为图像领域上的处理函数;[2] B=nlfilter(A,[m n],fun,P1,P2,…)\\可以传递参数P1,P2,…给函数fun;[3] B=nlfilter(A,’indexed’)\\把图像作为索引色图像处理,double填补1,uint8补0。

而且fun可以是一个函数句柄或是一个内联函数,返回类型由fun决定。

但是nlfilter 处理时可能需要很长时间,这时可是考虑使用快速处理函数colfilt。

用法类似,多一个参数bldck_tpye,表示块的移动方式,有distinc t和sliding两个取值,前者表示分离块操作,后者表示滑动块操作。

而且有[mblock nblock]表示图像块的大小。

分离块操作是将图像划分为大小相同的矩形区域,不同图像块在图像中无重叠排列,其顺序从左上角开始,不足的地方可以在右下角补0。

函数为blkproe,调用格式和nlfilter类似。

2.7 几何畸形校正和图像配准用到函数imtransform。

3 MATLAB二维与三维图形绘制及动画3.1 基本绘图命令3.2 绘图选项常用的绘图选项:线形:- -. -- :颜色:r g b c m y k w点标记:+ o * . x s d h p > < ^ v坐标轴标注:axis([xmin xmax,ymin ymax]),axis auto/square/xy/ij/normal/off/on等用法。

图形窗口保持:hold on…hold off。

给坐标加边框:box on…box off。

图形缩放:zoom on…zoom out…zoom off。

快速绘图:fplot(‘fun’,[ xmin xmax,ymin ymax])。

打印:print[filename][-device][-options],其中device决定打印机的类型。

3.3 特殊坐标二维图形可缺省,如fun1可以是plot等等。

Plot(z)绘制复数z的实部与虚部的图形。

3.4 二维图形处理图形标注:title,xlabel,ylabel,zlabel,text,gtext,legend。

图形窗口的分割:subplot(m,n,p)。

坐标系设定:axes,也可事后用gca(get current axes)获得当前坐标系的句柄。

通过get 和set函数获取和设置坐标轴对象的有关属性值。

用法如:属性值=get(句柄,属性)或者set(句柄,属性1,属性值1,属性2,属性值2,…)。

3.5 三维图形的绘制[1]改变网格属性:set(axes_handle,’XGrid’,’on’)grid函数显示网格。

[2]网格图中用到函数hidden on和hidden off来显示或者不显示被遮住部分。

[3]waterfall函数在x轴方向产生水流效果。

[4]meshgrid函数产生一个x-y平面的网格,如:[x,y]=meshgrid(-3:0.1:3,-2:0.1:2)。

[5]绘制球面的函数是sphere,如:sphere(n)或者[x,y,z]= sphere(n)。

也可以是函数cylinder,用法:cylinder(R,n)或者[x,y,z]= cylinder(R,n)。

n为面数,R为一函数。

[6]colorbar命令的作用是在三维曲面图旁边绘制一个可以指示亮度的彩色条。

[8]三维等值线图:contour3。

多一个指定等值线数目的参数N。

contour为其俯视图。

[9]quiver函数在等值线图上画出方向或速度箭头:quiver(X,Y,DX,DY)。

求导:gradient。

[10]fill3用法类似于fill,对三维图形进行填充。

[11]clabel函数:添加等高线。

[12]bar和bar3参数说明:group同一行数据的方条靠一起,stack画在一个方条上。

[13]饼形图pie和pie3:参数explode指定某些片是否和整个图脱开,与x的维数相同的向量,其中非0的那一片脱离整体。

加上标注如{属性1,属性2,…}。

[14]火柴杆图和瀑布图:stem,stem3和waterfall。

3.6 三维图形的控制视角view:仰角(与z轴的夹角)el和方位角(与x轴的夹角)az,即view(az,el)。

控制光照light:参数有color,style(infinit和local)和position。

相关文档
最新文档