收藏 分享(赏)

光电图像处理相关程序.doc

上传人:cjc2202537 文档编号:6212720 上传时间:2019-04-02 格式:DOC 页数:72 大小:351.50KB
下载 相关 举报
光电图像处理相关程序.doc_第1页
第1页 / 共72页
光电图像处理相关程序.doc_第2页
第2页 / 共72页
光电图像处理相关程序.doc_第3页
第3页 / 共72页
光电图像处理相关程序.doc_第4页
第4页 / 共72页
光电图像处理相关程序.doc_第5页
第5页 / 共72页
点击查看更多>>
资源描述

1、%图像读入% X,MAP=imread(filename.format)%X 为数据矩阵;map 为颜色映像矩阵,3 列若干行 0-1 之间的双精度浮点数X,map=imread(peacock24b.jpg); %将图像格式文件读入image(X); %显示图像 colormap(map) %设置索引图像的颜色表%读取图像信息%info=imfinfo(filename.format)Info=imfinfo(kq24b.jpg) %图像显示 Imshow%imshow(I,n) 显示灰度级为 n 的图像,n 缺省为 256。%imshow(I,low,high) 以灰度范围low,high

2、显示图像%imshow(I,),灰度范围为默认值的方式显示图像%imshow(X,MAP) 显示索引图像%imshow(I,jet(256) %colorbar %显示颜色表%imshow(RGB) %显示真彩色图像。%subimage %多图显示多个调色板的图像。%代码示例I= imread(peacock24b.jpg);J=imread(fish24b.jpg );K,map=imread(treesind.tif );subplot(3,3,1),imshow(I);colorbar; title(imshow 显示真彩色图)subplot(3,3,2),imshow(I,135,15

3、0);colorbar;title(显示灰度为135-150)subplot(3,3,3),imshow(I,spring(256);colorbar;title(显示 spring伪彩色)subplot(3,3,4),imshow(J);colorbar;title(imshow 显示真彩色图)subplot(3,3,5),imshow(J,lines(256);colorbar;title(显示 lines伪彩色)subplot(3,3,6),subimage(J);colorbar;title(subimage 显示原图)subplot(3,3,7),imshow (K,120,180)

4、;colorbar;title(显示灰度120-180)subplot(3,3,8),imshow(K,map);colorbar;title(imshow 显示索引图)subplot(3,3,9),subimage(K,map);colorbar;title(subimage 显示索引图)%图像保存 imwrite 函数%imwrite(I,filename,format)保存无调色板的图像%imwrite(X,MAP,filename,format)保存有调色板的图像%imwrite(I,filename.format)文件名中含格式%imwrite(I,parameters,value)

5、指定保存参数%文件格式:bmp、jpg、pcx、tif。I=imread(peacock24b.jpg);imwrite(I,peacock24b.tif,tif)J,map=imread(peacock24b.tif);subplot(1,2,1);subimage(I);title(jpg 格式原图)subplot(1,2,2);subimage(J);title(tif 格式图)%图像类型转换转换类型 转换函数 用 处 真彩图像索引 图像 X=dither(RGB,map) 节省存储空间,假彩色 索引图像真彩 图像 RGB=ind2rgb(X,map) 便于图像处理 真彩图像灰度 图像

6、I=rgb2gray(RGB) 得到亮度分布 真彩图像二值 图像 BW=im2bw(RGB,level) 阈值处理,筛选 索引图像灰度 I=ind2gray(X,map) 得到亮度分布图像 Newmap=rgb2gray(map) 灰度图像索引 图像X,map=gray2ind(I,n),X=grayslice(I,n)X=grayslice(I,v)伪彩色处理 灰度图像二值 图像 BW=dither(I)BW=im2bw(I,level) 阈值处理,筛选 索引图像二值 图像 BW=im2bw(X,map,level) 阈值处理,筛选 数据矩阵灰度 图像I=mat2gray(A,max,min

7、)I=mat2gray(A)产生图像%1.真彩图像索引图像%X=dither(RGB,map) %通过颜色抖动实现转换,RGB 可以是 double 或uint8 类型,X 超过 256 色则为 double 类型,否则输出为 uint8 型%2.索引图像真彩图像%RGB=ind2rgb(X,map) %X 可以是 double 或 uint8 类型,RGB 为 double 类型%3 真彩图像灰度图像%I=rgb2gray(RGB) %RGB 可以是 double 或 uint8 类型,I 类型同 RGB%peacock rgb-indclf,rgbpeacock =imread(peaco

8、ck24b.tif);map=jet(256); peacockind=dither(rgbpeacock,map);subplot(3,2,1);subimage(rgbpeacock);title(孔雀真彩图)subplot(3,2,2);subimage(peacockind,map);title(孔雀索引图) %trees ind-rgbtreesind,map =imread(treesind.tif);rgbtrees =ind2rgb(treesind,map);subplot(3,2,3);subimage(treesind,map);title(树索引图)subplot(3,

9、2,4);subimage(rgbtrees);title(树真彩图) %fish rgb-grayrgbfish=imread(fish24b.jpg); fishgray=rgb2gray(rgbfish);subplot(3,2,5);subimage(rgbfish);title(鱼真彩图)subplot(3,2,6);subimage(fishgray);title(鱼灰度图) %4 真彩图像二值图像%BW=im2bw(RGB,level) %设置亮度阈值 level,将真彩图像转换为二值图像,BW 为 uint8 型%5 索引图像灰度图像%(1)%I=ind2gray(X,map)

10、 %X 可以是 double 或 uint8 类型,map 为double 类型%(2)%Newmap=rgb2gray(map) %将彩色调色板 map 转换为灰度调色板Newmap%6 灰度图像索引图像%(1)%X,map=gray2ind(I,n) %将灰度图像转换为灰度级为 n 的索引图像 X,n 的默认值为 64;%(2)%X=grayslice(I,n) %将灰度图像 I 均匀量化为 n 个等级,然后转换为伪彩色图像 X;%(3)%X=grayslice(I,v) %按指定的阈值矢量 v(其中每个元素在 0 和 1 之间)对图像 I 进行阈值划分,然后转换成%索引图像,I 可以是

11、double 类型、uint8 类型和 uint16 类型,map 的行不大于 256,则 X 为 uint 类型,否则为 double 类型%真彩图像二值图像clf, peacock24brgb=imread(peacock24b.tif);peacock24bbw=im2bw(peacock24brgb,0.5); peacock24bgray=rgb2gray(peacock24brgb);subplot(3,3,1);subimage(peacock24brgb);title(孔雀真彩图)subplot(3,3,2);subimage(peacock24bgray);title(孔雀灰

12、度图)subplot(3,3,3);subimage(peacock24bbw);title(孔雀二值图) %索引图像灰度图像load trees;I=ind2gray(X,map);Newmap=rgb2gray(map);subplot(3,3,4);subimage(X,map);title(索引图)subplot(3,3,5);subimage(I);title(格式 1 灰度图)subplot(3,3,6);subimage(X,Newmap);title(格式 2 灰度图) %灰度图像索引图像J=imread(fish24b.jpg);X1,map1=gray2ind(J,16);

13、X2=grayslice(J,8);subplot(3,3,7);subimage(J);title(灰度图)subplot(3,3,8);subimage(X1);title(16 灰度级图)%subplot(3,3,9);subimage(X2,hot(8);title(均匀量化图)subplot(3,3,4);subimage(X3,jet(8);title(非均匀量化图) %7、灰度图像二值图像%BW=dither(I);%用抖动的方式实现转换,I 可以是 double 类型和 uint8类型%BW=im2bw(I,level);% 用阈值方式转换,BW 为 uint8 类型clf,I

14、=imread( peacock24b.tif);BW1=dither(I);BW2=im2bw(I,0.5);subplot(2,2,1);subimage(I);title(灰度图)subplot(2,2,3);subimage(BW1);title(抖动二值化)subplot(2,2,4);subimage(BW2);title(阈值二值化)%8 索引图像二值图像%BW=im2bw(X,map,level) %X 可以是 double 类型和 uint8 类型,BW 为uint8 类型clf,load trees;BW=im2bw(X,map,0.5);subplot(1,2,1);su

15、bimage(X,map);title(索引图)subplot(1,2,2);subimage(BW);title(二值图) %9 数据矩阵灰度图像%(1)%I=mat2gray(A,max,min) %按指定的取值区间max,min将数据矩阵 A 转换为灰度图像 I%(2) %I=mat2gray(A) %A 为 double 类型,I 为 double 类型clf;I=imread( peacock24b.tif.tif);A=filter2(fspecial(sobel),I);J=mat2gray(A);subplot(1,2,1);subimage(I);title(原图)subpl

16、ot(1,2,2);subimage(J);title(转换图) 图像的加运算I = imread(rice.png);%读取图像,大小为 256*256,类型为 uint8J = imread(cameraman.tif); %读取图像,大小为 256*256,类型为uint8K = imadd(I,J,uint16);%两幅图像相加,K 的图像格式为 uint16L = imadd(I,120);%图像和一个常数相加figure;%依次显示四幅图像subplot(221); imshow(I); subplot(222); imshow(J);subplot(223); imshow(K,

17、); subplot(224); imshow(L,);图像的减运算I = imread(rice.png); %读取图像J = imread(cameraman.tif); %读取图像K = imsubtract(I,J);%两幅图像相减L = imsubtract(I,120);%一幅图像减去一个常数figure;%依次显示四幅图像subplot(221); imshow(I); subplot(222); imshow(J);subplot(223); imshow(K,); subplot(224); imshow(L,);图像的乘运算I = imread(moon.tif); %读取

18、图像I16 = uint16(I);%转换图像数据类型J = immultiply(I16,I16);%同一幅图像相乘K=imread(rice.png);L = immultiply(K,0.5);%图像乘以一个常数figure;%依次显示四幅图像subplot(221); imshow(I); subplot(222); imshow(J);subplot(223); imshow(K); subplot(224); imshow(L);图像的除运算I = imread(rice.png);J=imread(cameraman.tif);Ip = imdivide(I,J);%两幅图像相除

19、K = imdivide(I,2);%图像跟一个常数相除figure;%依次显示四幅图像subplot(221); imshow(I); subplot(222); imshow(J,);subplot(223); imshow(Ip,); subplot(224); imshow(K);图像的一般线性运算I = imread(rice.png);J = imread(cameraman.tif);K = imlincomb(1,I,1,J,uint16);%两幅图像相加,加权系数分别为1,1L=imlincomb(2,I);%一幅图像相乘,加权系数为 2figure;%依次显示四幅图像sub

20、plot(221); imshow(I); subplot(222); imshow(J);subplot(223); imshow(K,); subplot(224); imshow(L,);图像的逻辑运算I = imread(cameraman.tif);J=imread(rice.png);I1=im2bw(I);%转化为二值图像J1=im2bw(J);K1=I1 %逻辑与运算K2=I1 | J1;%逻辑或运算K3=I1;%逻辑非运算K4=xor(I1,J1);%异或运算figure;%依次显示四幅图像subplot(221);imshow(I); subplot(222);imshow

21、(J);subplot(223);imshow(I1); subplot(224);imshow(J1);figure;%依次显示四幅图像subplot(221);imshow(K1); subplot(222);imshow(K2);subplot(223);imshow(K3); subplot(224);imshow(K4);图像的缩放I = imread(rice.png);m,n=size(I);J1 = imresize(I, 0.2);%缩小 0.2 倍J2 = imresize(I, 8, nearest);%最近邻放大 8 倍J3 = imresize(I,8*m 8*n,

22、bilinear);%双线性放大 8 倍figure;subplot(221);imshow(I); subplot(222);imshow(J1);subplot(223);imshow(J2); subplot(224);imshow(J3);图像的旋转I = imread(cameraman.tif);%读取图像J1=imrotate(I,-45,bicubic);%使用 bicubic 插值顺时针旋转 45J2=imrotate(I,45,bilinear,crop);%使用 crop 方式显示旋转后图像J3=imrotate(I,45,bilinear,loose);%使用 loos

23、e 方式显示旋转后图像figure;subplot(221);imshow(I); subplot(222);imshow(J1);subplot(223);imshow(J2); subplot(224);imshow(J3);图像的交互式裁剪I = imread(circuit.tif);figure,imshow(I)I0=imcrop;figure,imshow(I0);I = imread(circuit.tif);I2 = imcrop(I,75 68 130 112);imshow(I), figure, imshow(I2)快速傅里叶变换%二维离散福利叶变换的快速变换%Y=ff

24、t2(X,m,n); %X 为要进行变换的矩阵,m,n 是返回的变换矩阵的行数和列数,m,n 可以省略%Y=fft2(X);则返回的 Y 与 X 的行数和列数相同%二维离散福利叶变换快速反变换%Y=ifft2(X,m,n); %X 为要进行变换的矩阵,m,n 是返回的变换矩阵的行数和列数,m,n 可以省略%fftshift %Y=fft2(X); %将傅里叶变换结果中零频率成分移到矩阵中心,有利于观察频谱。 %例f = zeros(30,30);f(5:24,13:17) = 1;%生成一矩形函数F0 = fft2(f);%二维傅立叶变换F2 = log(abs(F0);F = fft2(f,

25、256,256);% 先将 30 行 30 列矩阵填充零后变成 256 行 256列数据矩阵F1 = fftshift(F);%将零频率移到中心位置figure;subplot(221);imshow(f,InitialMagnification,fit);%以合适窗口大小显示 ftitle(矩形窗口原图,返回 30 行 30 列)subplot(222);imshow(F2,-1 5,InitialMagnification,fit); %确定像素值的显示范围title(傅里叶变换幅值的对数分布 30 行 30 列)subplot(223);imshow(log(abs(F),-1 5);

26、% title(返回矩阵 256 行 256 列)subplot(224);imshow(log(abs(F1),-1 5); %对数显示频移后的图像title(频移后的傅里叶变换图)%B= dct2(A) %二维离散余弦变换% B= dct2(A,m,n) %二维离散余弦变换,m,n 是变换返回的矩阵的行数和列数% B= dct2(A,m,n) %二维离散余弦变换,m,n 是变换返回的矩阵的行数和列数% B= dct2(A)%B= idct2(A) %二维离散余弦变换% B= idct2(A,m,n) %二维离散余弦变换,m,n 是变换返回的矩阵的行数和列数% B=idct2(A,m,n)

27、%二维离散余弦变换,m,n 是变换返回的矩阵的行数和列数% B= idct2(A)%D= dctmtx(n) %返回二维离散余弦变换的变换矩阵,n 取 8 或 16%例:离散余弦变换和逆变换RGB = imread(autumn.tif);%读取图像I = rgb2gray(RGB);%转化为灰度图像J = dct2(I);%离散余弦变换figure,imshow(log(abs(J),),%显示离散余弦变换的系数 colormap(jet(64), colorbarJ(abs(J) =0)elseg(i,j)=0;endendendfigure,imshow(mat2gray(g)%采用对数

28、形式的变换函数进行动态范围压缩X1=imread(circuit.tif);figure,imshow(X1); %绘制变换曲线c=255/log(256);x=0:1:255;y=c*log(1+x);figure,plot(x,y);axis tight,xlabel(f),ylabel(g);title(intensity transformation)%转换矩阵中的每个元素m,n=size(X1);X2=double(X1);for i=1:m for j=1:ng(i,j)=c*log(X2(i,j)+1);endendfigure,imshow(mat2gray(g)%用 imfi

29、lter()函数实现 5*5 邻域平均运算clear all;I=imread(moon.tif);J=imnoise(I,salt h=ones(5,5)/25;I2=imfilter(J,h);subplot(121),imshow(J);title(加有椒盐噪声)subplot(122),imshow(I2);title(5*5 邻域均值滤波)%用 wiener 函数实现 5*5 邻域平均运算clear all;J=imread(moon.tif);I=imnoise(J,salt figure,imshow(I);K1=wiener2(I,3,3); %33Wiener 滤波K2=wi

30、ener2(I,5,5); %55Wiener 滤波K3=wiener2(I,9,9); %77Wiener 滤波subplot(131),imshow(K1); subplot(132),imshow(K2); subplot(133),imshow(K3);%对含有椒盐噪声的图像实现中值滤波处理 clear all;I=imread(cameraman.tif);figure,imshow(I);I1=imnoise(I,salt %加噪K1=medfilt2(I1,3,3); %使用 3*3 模板完成中值滤波K2=medfilt2(I1,5,5); %使用 5*5 模板完成中值滤波K3=

31、medfilt2(I1,7,7); %使用 7*7 模板完成中值滤波subplot(221),imshow(I1);subplot(222),imshow(K1);subplot(223),imshow(K2);subplot(224),imshow(K3);%通过 filter2 和 fspecial 函数实现线性锐化滤波 fspecial 函数用法fspecial 函数用于建立预定义的滤波算子,其语法格式为:h = fspecial(type)或者 h = fspecial(type,para),其中 type 指定算子的类型,para 指定相应的参数;type 的类型有:1、averag

32、e averaging filter 为均值滤波,参数为 hsize 代表模板尺寸,默认值为【3,3】 。H = FSPECIAL(average,HSIZE) returns an averaging filter H of size HSIZE. HSIZE can be a vector specifying the number of rows and columns in H or a scalar, in which case H is a square matrix.The default HSIZE is 3 3.2、 diskcircular averaging filter

33、为圆形区域均值滤波,参数为 radius 代表区域半径,默认值为 5.H = FSPECIAL(disk,RADIUS) returns a circular averaging filter(pillbox) within the square matrix of side 2*RADIUS+1. The default RADIUS is 5.3、gaussianGaussian lowpass filter 为高斯低通滤波,有两个参数,hsize 表示模板尺寸,默认值为【3 3】 ,sigma 为滤波器的标准值,单位为像素,默认值为0.5.H = FSPECIAL(gaussian,HS

34、IZE,SIGMA) returns a rotationallysymmetric Gaussian lowpass filter of size HSIZE with standard deviation SIGMA (positive). HSIZE can be a vector specifying the number of rows and columns in H or a scalar, in which case H is a square matrix. The default HSIZE is 3 3, the default SIGMA is 0.5.4、laplac

35、ian filter approximating the 2-D Laplacian operator为拉普拉斯算子,参数 alpha 用于控制算子形状,取值范围为【0,1】 ,默认值为 0.2.H = FSPECIAL(laplacian,ALPHA) returns a 3-by-3 filter approximating the shape of the two-dimensional Laplacian operator. The parameter ALPHA controls the shape of the Laplacian and must be in the range

36、0.0 to 1.0. The default ALPHA is 0.2.5、logLaplacian of Gaussian filter 为拉普拉斯高斯算子,有两个参数,hsize 表示模板尺寸,默认值为【3 3】 ,sigma 为滤波器的标准差,单位为像素,默认值为 0.5. H = FSPECIAL(log,HSIZE,SIGMA) returns a rotationally symmetric Laplacian of Gaussian filter of size HSIZE with standard deviation SIGMA (positive). HSIZE can

37、be a vector specifying the number of rows and columns in H or a scalar, in which case H is a square matrix.The default HSIZE is 5 5, the default SIGMA is 0.5.6、motionmotion filter 为运动模糊算子,有两个参数,表示摄像物体逆时针方向以theta 角度运动了 len 个像素,len 的默认值为 9,theta 的默认值为 0;H = FSPECIAL(motion,LEN,THETA) returns a filter

38、to approximate, once convolved with an image, the linear motion of a camera by LEN pixels, with an angle of THETA degrees in a counter-clockwise direction. The filter becomes a vector for horizontal and vertical motions.The default LEN is 9, the default THETA is 0, which corresponds to a horizontal

39、motion of 9 pixels.7、prewittPrewitt horizontal edge-emphasizing filter 用于边缘增强,大小为【3 3】 ,无参数 H = FSPECIAL(prewitt) returns 3-by-3 filter that emphasizes horizontal edges by approximating a vertical gradient. If you need to emphasize vertical edges, transpose the filter H: H. 1 1 1;0 0 0;-1 -1 -1.8、so

40、belSobel horizontal edge-emphasizing filter 用于边缘提取,无参数 H = FSPECIAL(sobel) returns 3-by-3 filter that emphasizes horizontal edges utilizing the smoothing effect by approximating a vertical gradient. If you need to emphasize vertical edges, transpose the filter H: H. 1 2 1;0 0 0;-1 -2 -1.9、unsharpuns

41、harp contrast enhancement filter 为对比度增强滤波器。参数 alpha 用于控制滤波器的形状,范围为【0,1】 ,默认值为 0.2. H = FSPECIAL(unsharp,ALPHA) returns a 3-by-3 unsharp contrast enhancement filter. FSPECIAL creates the unsharp filter from the negative of the Laplacian filter with parameter ALPHA. ALPHA controls the shape of the Lap

42、lacian and must be in the range 0.0 to 1.0. The default ALPHA is 0.2.clear all;I1=imread(moon.tif);%将图像矩阵转化为 double 型I1=double(I1);h1=fspecial(laplacian);I2=filter2(h1,I1); %拉氏变换subplot(121),imshow(I1,);I3=I1-I2; subplot(122),imshow(I3,);%下面是利用拉普拉斯算子对模糊图像进行增强I=imread(trees.tif);I=double(I); %转换数据类型为

43、 double 双精度型figure,imshow(I,);H=0 1 0,1 -4 1,0 1 0; %拉普拉斯算子J=conv2(I,H,same); %用拉普拉斯算子对图像进行二维卷积运算%增强的图像为原始图像减去拉普拉斯算子滤波的图像K=I-J; figure,imshow(K,)%利用 sobel 算子对图像滤波 I=imread(tire.tif);H=fspecial(sobel); %选择 Sobel 算子figure,imshow(I); J=filter2(H,I); %卷积运算figure,imshow(J)%空间域滤波图像增强% J= imnoise(I,type,pa

44、rameters);%加入噪声,I 为原图像,type 为加入噪声类型,parameters 为加入噪声的参数。I = imread(tire.tif);%原图像J1 = imnoise(I,salt %加入椒盐噪声J2 = imnoise(I,gaussian,0,0.01);%加入高斯白噪声J3 = imnoise(I,poisson);%加入泊松噪声J4 = imnoise(I,speckle,0.04);%加入乘法噪声imshow(I);%显示原图像figure;%分别显示四种噪声的效果()subplot(221), imshow(J1),title(加入椒盐噪声); subplot(

45、222), imshow(J2), title(加入高斯白噪声);subplot(223), imshow(J3), title(加入泊松噪声); subplot(224), imshow(J4), title(加入乘法噪声);%中值滤波和均值滤波对比I = imread(tire.tif);%读取图像J = imnoise(I,salt %加入椒盐噪声K = filter2(fspecial(average,3),J)/255;%使用均值滤波器进行滤波L = medfilt2(J,3 3);%中值滤波subplot(221), imshow(I), title(显示原图像)%显示原图像sub

46、plot(222), imshow(J), title(显示有椒盐噪声的图像)%显示有椒盐噪声的图像subplot(223), imshow(K), title(显示均值滤波的图像)%显示均值滤波的图像subplot(224), imshow(L), title(显示中值滤波的图像)%显示中值滤波的图像%wiener2 函数自适应滤波,当图像局部变化大的时候,函数进行比较小的平滑;当图像局部变化小的时候 i,函数进行比较大的平滑。比线性滤波有更好的效果,保留了图像的边界和图像的高频成分。RGB = imread(peacock24b.jpg);I = rgb2gray(RGB); J = im

47、noise(I,gaussian,0,0.025);K = wiener2(J,5 5);subplot(121), imshow(J),title(图像加入高斯噪声); subplot(122), imshow(K), title(显示自适应滤波图像);%各种频率域低通滤波器的实现I,map=imread(moon.tif);noisy=imnoise(I,gaussian,0.01);M,N=size(I);F=fft2(noisy);fftshift(F);Dcut=100;D0=150;D1=250;for u=1:Mfor v=1:ND(u,v)=sqrt(u2+v2);BUTTERH(u,v)=1/(1+(sqrt(2)-1)*(D(u,v)/Dcut)2);EXPOTH(u,v)=exp(log(1/sqrt(2)*(D(u,v)/Dcut)2);if D(u,v)D0THPFH(u,v)=1;elseif D(u,v)=D1THPEH(u,v)=(D(u,v)-D1)/(D0-D1);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > 图形图像

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报