• 1. 第六讲:Matlab工具箱之数字图像处理数字图像基础 数字图像读取与显示 数字图像处理
  • 2. 6.1数字图像基础1图像与数字图像 图像:是对客观对象的一种相似性的描述或写真,它包含了被描述或写真对象的信息,是人们最主要的信息源。 图像的含义十分广泛。英文picture指图片、图画,各种照片以及光学影像,它是用绘画或拍照的方法,对人、物、景的模拟(likeness)。英文image的意义代表“像”,它是人或景物(scene)的再现(representation),或者说它是人或景物通过透镜等光学系统产生的景物的视觉印象(visual impression)。 图(picture)是物体反射或透射光的分布,它是客观存在的 像(Image)是人的视觉系统所接收的图在人的大脑中所形成的印象和认识
  • 3. 按图像明暗程度和空间坐标的连续性划分,图像可以分为数字图像和模拟图像
  • 4. 2模拟图像与数字图像模拟图像:也称光学图像,是指空间坐标和明暗程度连续变化的,计算机无法直接处理的图像,它属于可见图像。 数字图像:是指能被计算机存储、处理和使用的图像,是空间坐标和灰度均不连续,用离散数字表示的图像 A/D(模/数转换) D/A (数/模转换)
  • 5. 图像的获取方式(如遥感)摄影成像 扫描成像 雷达成像航向重叠 60%旁 向 重 叠 30-20%航向Strip 3Strip 2Strip 1单片 摄影感光胶片磁带或光盘 雷达是由发射机通过天线在很短的时间内,向目标地物发射一束很窄的大功率电磁波脉冲,然后用同一天线接收目标地物反射的回波信号而进行显示的一种传感器。按照雷达的工作方式可分为:成像雷达和非成像雷达。成像雷达中又可分为真实孔径侧视雷达和合成孔径侧视雷达
  • 6. 3图像数字化通过摄影、扫描和雷达等传感器所获得的地面信息,记录在胶片上得到的图像,都属于遥感模拟图像。要获得遥感数字图像,必须利用数码相机或扫描仪等设备,把模拟图像转变为遥感数字图像,使计算能够处理,这一转换过程称为图像的数字化
  • 7. (1)采样(空间离散)空间上连续的图像变化成离散点的操作成为采样,实际上是空间坐标(x,y)的数字化,即按一定的间隔(△x, △ y)将图像划分M行×N列的网格
  • 8. 显然,采样网格的大小关系到图像的质量及 所包含的信息1024×1024128×128256×256512×51264×6432×32
  • 9. (本页无文本内容)
  • 10. f(x,y)xy(2)量化 (灰度离散)
  • 11. (本页无文本内容)
  • 12. 265×180133×9066×4533×22256灰度级16灰度级8灰度级4灰度级采样大小与量化等级对图像质量的影响
  • 13. 4数字图像的基本特点1 图像便于计算机处理与分析 2 图像信息损失低 3 图像的抽象性强 4 图像保存方便
  • 14. 5图像的类型1 按灰度值可分为二值图像和多值图像 二值图像:每个像素灰度由0或1构成 多值图像:每个象素灰度由0~2n之间的数 表示(n>1) 2 按波段量可分为单波段、彩色或多波段数字图像
  • 15. 文件头文件信息,如标识、波段数、文件头长度等,图像数据的记录方式各类注记与辅助信息与成像相关的辅助信息及与预处理相关的信息,如卫星编号、传感器、成像时间、中心点经纬度、轨道号、星下点经纬度、波段数、太阳高度角、投影方法传感器增益等波段1波段2……尾部数据的质量信息6数字图像的存储
  • 16. 位图(.BMP)文件格式文件标题(BITMAPFILEHEADER)文件标识、整个文件长度、文件头长度信息标题(BITMAPINFOHEADER)信息标题结构字节数、位图的宽度、高度、每像素的位数、位图颜色索引数等调色板信息(RGBQUAD)储存了biBitCount个RGBQUAD个结构, RGBQUAD结构成员变量包含蓝、绿、红的亮度实际图像信息在不压缩时,位图文件是按行顺序存储,每一行从左到右进行存储。每行在位图中的存储位置是按照从下到上的顺序进行的。
  • 17. Matlab数字图像处理工具箱函数包括以下几类: (1)图像文件输入、输出函数;(2)图像显示函数; (3)图像几何操作函数;(4)图像像素值及统计函数;(5)图像分析函数;(6)图像增强函数;(7)线性滤波函数;(8)二维线性滤波器设计函数;(9)图像变换函数;(10)图像邻域及块操作函数;(11)二值图像操作函数;(12)基于区域的图像处理函数;(13)颜色图操作函数;(14)颜色空间转换函数;(15)图像类型和类型转换函数。
  • 18. 6.2图像的读取与显示1图像读取 函数和语法 A = imread(filename,fmt) [X,map] = imread(filename,fmt) load filename (对于索引图,*.mat格式的数据等) tu=imread('football.jpg') tu=imread('forest.tif'); load woman
  • 19. 2 图像显示函数及其调用方法
  • 20. (1)一般的方式imshow football.jpg imshow trees.tif 区别 figure,imshow football.jpg figure,imshow trees.tif imview('trees.tif')
  • 21. (2)索引图的显示load woman 对比 imshow(X,map) imshow(X) 对于X中的每一个象素,imshow显示存储在map中的颜色 imshow(uint8(X))
  • 22. (3)彩色图像的显示前面imshow football.jpg 等 都可是显示彩色,单有时候要调整RGB的显示顺序怎么办? tu=imread('football.jpg'); imshow(tu)
  • 23. tu=imread('football.jpg'); imshow(tu) imshow(tu(:,:,[1 2 3])) imshow(tu(:,:,[3 2 1])) imshow(tu(:,:,[1 3 2]))
  • 24. (4)灰度图像的显示figure,imshow pout.tif I=imread('pout.tif'); figure,imshow(I) figure,imshow(I,[1 200]) figure,imshow(I,2) figure,imshow(I,8) figure,imshow(I,256)
  • 25. (5)truesize的使用 如果图像太小,显示很小,不利于浏览,这是可是采用truesize来进行调整 bw=zeros(20,20); bw(2:2:18,2:2:18)=1 figure,imshow(bw) figure,imshow(bw),truesize([100 100]) figure,imshow(bw,'notruesize')
  • 26. (本页无文本内容)
  • 27. bw=imread('circbw.tif'); imshow(bw) figure,imshow(~bw)(6)图像显示中逻辑操作符的使用(常用于二值图像)
  • 28. (7)特殊的显示方式显示多祯图像(实现动画) 语法 mov = immovie(X,map) mov = immovie(RGB) 通常和movie(mov)联合使用
  • 29. 举例1 axis equal M=moviein(16) set(gca,'NextPlot','replacechildren') for j=1:100 plot(fft(eye(j+16))) M(:,j)=getframe; end Movie(M,2)%指定放映几次
  • 30. 举例2 mri=uint8(zeros(128,128,1,27)); for frame=1:27 [mri(:,:,:,frame),map]=imread('mri.tif',frame); end mov=immovie(mri,map); montage(mri,map)%蒙太奇;画面剪辑,由许多画面或图样并列或叠化而成的一个图画作品 movie(mov);
  • 31. 6.3Matlab图像处理图像的几何运算 图像的亮度调整 图像中斑点的去除 图像的轮廓 图像的边界 图像间的运算 特定区域的处理
  • 32. 1 图像几何运算(1)图像大小的调整imresize 语法 B = imresize(A,m) B = imresize(A,m,method) B = imresize(A,[mrows ncols],method) B = imresize(...,method,n) B = imresize(...,method,h)
  • 33. load woman2 Figure imshow(X,map) X1 = imresize(X,2); figure imshow(X1,[]); X2 = imresize(X,3); figure imshow(X2,[]); X3 = imresize(X,4); figure imshow(X3,[]);
  • 34. (2)图像旋转imrotate 语法 B = imrotate(A,angle) B = imrotate(A,angle,method) A>0逆时针选择一个角度angle,反之顺时针
  • 35. [I,map] = imread('kids.tif'); J = imrotate(I,35); subplot(1,2,1) imshow(I,map) subplot(1,2,2) imshow(J,map)
  • 36. (3)图像裁剪imcrop(规则裁剪) 基本语法 J= imcrop J = imcrop(I) J = imcrop(X,map)
  • 37. [I,map] = imread('kids.tif'); imshow(I,map) Imcrop
  • 38. 不规则裁剪 tu=imread('pears.png'); figure,imshow(tu)
  • 39. (本页无文本内容)
  • 40. tu=imread('pears.png'); figure,imshow(tu) bw=roipoly(tu); figure,imshow(bw) r=tu(:,:,1); g=tu(:,:,2); b=tu(:,:,3); cr=bw.*double(r); cg=bw.*double(g); cb=bw.*double(b); J=cat(3,uint8(cr),uint8(cg),uint8(cb)); figure,imshow(J)
  • 41. 2 图像亮度的调整 (1)线性处理tu=imread('pout.tif'); figure,imshow(tu) tu1=(double(tu))*1.5+30; figure,imshow(uint8(tu1)) tu1=(double(tu))*0.5; figure,imshow(uint8(tu1))
  • 42. 也可是用Imadjust来进行调整,语法如下 tu= imadjust(i,[low_in; high_in],[low_out; high_out]) LI=imadjust(tu,[0.3 0.7],[0,1]); figure,imshow(LI) LI=imadjust(tu,[0.3 0.7],[0,0.4]); figure,imshow(LI)
  • 43. (2)直方图均衡化处理
  • 44. 语法tu=histeq(I); m=imread('tire.tif'); subplot(221),imshow(m);title('原图'); subplot(222),hist(double(m));title('原图直方图'); hm=histeq(m); subplot(223),imshow(hm);title('原图均衡化处理'); subplot(224),hist(double(hm));title('均衡处理后直方图');
  • 45. 3 图像中斑点的去除
  • 46. I=imread('eight.tif'); J=imnoise(I,'salt & pepper',0.06); subplot(221),imshow(I),title('原图') subplot(222),imshow(J),title('含斑点的图') H = fspecial('average'); am = imfilter(J,H); subplot(223),imshow(am),title('均值') zm=medfilt2(J);%中值 subplot(224),imshow(zm),title('中值')
  • 47. 4 图像的轮廓语法imcontour(I,N) 举例 I = imread('cameraman.tif'); imcontour(I,1)
  • 48. 5 图像的边界探测 语法:edge(I) I=imread('coins.png'); BW1 = edge(I,'roberts'); BW2 = edge(I,'sobel'); BW3 = edge(I,'log'); figure subplot(221),imshow(I),title('原图') subplot(222),imshow(BW1),title('roberts算子') subplot(223),imshow(BW2),title('sobel算子') subplot(224),imshow(BW3),title('laplacian算子')
  • 49. (本页无文本内容)
  • 50. 6图像间的运算
  • 51. I=imread(‘rice.tif'); J=imread('cameraman.tif'); k=imadd(I,J);
  • 52. 7特定区域的处理(1)特定区域的增强处理
  • 53. I = imread('pout.tif'); imshow(I) BW = roipoly(I); H = fspecial('unsharp'); J = roifilt2(H,I,BW); figure, imshow(J)
  • 54. (2)特定区域的填充
  • 55. load trees I=ind2gray(X,map); figure,imshow(I) J=roifill; figure,imshow(J)