找回密码
 立即注册
查看: 359|回复: 0

MATLAB图像处理v2

[复制链接]
发表于 2021-12-17 15:15 | 显示全部楼层 |阅读模式
特定区域处理

区域的指定

在进行图像处理时,有时只要对图像中某个特定区域进行处理,并不需要对整个图像进行处理。MATLAB中对特定区域的处理是通过二值掩模来实现的,通过选定一个区域后会生成一个与原图大小相同的二值图像,选定的区域为白色,其余部分为黑色。通过掩模图像,就可以实现对特定区域的选择性处理。下面介绍创建区域的方法:

  • 多边形选择方法 roipoly函数用于设定图像中的多边形区域,该函数返回与输入图像大小一致的二值图像BW,选中的区域值为1,其余的部分值为0。其语法格式为:
BW=roipoly(I,c,r)
其功能是:用向量c、r指定多边形各角点的X、Y轴的坐标。
BW=roipoly(I)
其功能是:是让用户交互选择多边形区域,通过点击鼠标设定多边形区域的角点,用空格键和Del键撤销选择,按Enter键确认选择,确认后该函数返回与输入图像大小一致的二值图像BW,在多边形区域内像素值为1,其余区域内像素值为0。
BW=roipoly(x,y,I,xi,yi)
其功能是:是用矢量x、y建立非默认的坐标系,然后在指定的坐标系下选择由向量xi、yi指定的多边形区域。
[BW,xi,yi]=roipoly(…)
其功能是:交互选择多边形区域,并返回多边形角点的坐标。
[x,y,BW,xi,yi]=roipoly(…)
其功能是:交互选择多边形区域后,还返回多边形顶点在指定的坐标系X-Y下的坐标。
例:根据指定的坐标选择一个六边形区域的程序清单:
I=imread('eight.tif');
c=[222 272 300 272 222 194];
r=[21 21 75 121 121 75];
BW=roipoly(I,c,r);
figure(1);imshow(I);
figure(2);imshow(BW);

  • 其他选择方法 MATLAB图像处理工具箱中提供了可以实现按灰度选择区域的函数roicolor函数,其语法格式为:
BW=roicolor(A,low,high)
其功能是:按指定的灰度范围分割图像,返回二值掩模BW,[low,high]为所要选择区域的灰度范围。如果low大于high,则返回为空矩阵。
BW=roicolor(A,v)
其功能是:按向量v中指定的灰度值来选择区域。 下面是一个按灰度分割图像中的目标的程序清单:
I=imread('rice.tif');

I=imread('rice.png');
BW=roicolor(I,128,255);
figure(1);imshow(I);
figure(2);imshow(BW);
特定区域滤波

MATLAB图像处理工具箱中提供的roifilt2函数用于对特定区域进行滤波,其语法格式为:
J=roifilt2(h,I,BW)
其功能是:使用滤波器h对图像I中用二值掩模BW选中的区域滤波。
J=roifilt2(I,BW,fun)
J=roifilt2(I,BW,fun,P1,P2,…)
其功能是:对图像I中用二值掩模BW选中的区域作函数运算fun,其中fun是描述函数运算的字符串,参数为P1、P2、…。返回图像J在选中区域的像素为图像I经fun运算的结果,其余部分的像素值为I的原始值。
例:对指定区域进行锐化滤波的程序清单:
I=imread('eight.tif');
c=[222 272 300 272 222 194];
r=[21 21 75 121 121 75];
BW=roipoly(I,c,r);
h=fspecial('unsharp');
J=roifilt2(h,I,BW);
subplot(1,2,1);imshow(I);
subplot(1,2,2);imshow(J);
由运行结果可知:右上角的硬币发生了变化,而其他硬币保持不变。
特定区域填充

MATLAB图像处理工具箱中提供的roifill函数用于对特定区域进行填充,其语法格式为:
J=roifill(I,c,r)
其功能是:填充由向量c、r指定的多边形,c和r分别为多边形各顶点的X、Y坐标。它是通过解边界的拉普拉斯方程,利用多边形边界的点的灰度平滑的插值得到多边形内部的点。通常可以利用对指定区域的填充来“擦”掉图像中的小块区域。
J=roifill(I)
其功能是:由用户交互选取填充的区域。选择多边形的角点后,按Enter键确认选择,用空格键和Del键表示取消一个选择。
J=roifill(I,BW)
其功能是:用掩模图像BW选择区域。
[J,BW]=roifill(…)
其功能是:在填充区域的同时还返回掩模图像BW。
J=roifill(x,y,I,xi,yi)
[x,y,J,BW,xi,yi]=roifill(…)
其功能是:在指定的坐标系X-Y下填充由向量xi,yi指定的多边形区域。
例:下面是一个为填充指定的区域程序清单:
I=imread('rice.tif');

I=imread('rice.png');
c=[52 72 300 270 221 194];
r=[71 21 75 121 121 75];
J=roifill(I,c,r);
subplot(1,2,1);imshow(I);
subplot(1,2,2);imshow(J);
参考教材: 《数字图像处理及MATLAB实现》余成波编著  重庆大学出版社  TN911.73
图形图像文件的读取

图形图像文件操作        相关的函数 已MAT文件加载或保存矩阵数据        Load、save 加载或保存图形文件格式的图像,如BMP、TIFF等        Imread、imwrite 显示加载到MATLAB7.0中的图像        Image、imagesc 信息查询        Imfinfo、ind2rgb
图形图像文件的读取

主要调用格式:
A=imread(filename,fmt)                       [X,map]=imread(filename,fmt)
[…]=imread(filename)                         […]=imread(URL, …)
[…]=imread(…,idx)  (CUR,ICO,and TIFF only)   
[…]=imread(…,idx)  (CUR,ICO,and TIFF only)
[…]=imread(…,’frames’,idx)  (GIFF only)
[…]=imread(…,ref)  (HDF only)
[…]=imread(…,’BackgroundColor’,BG)  (PNG only)
[A,map,alpha]=imread(…)  (CUR,ICO,and PNG only)
最基本调用格式:
[X,map]=imread(filename,fmt)

*imread('rice.png','5');   %读取rice.png文件的第5帧图像

*RGB=imread(‘earth.jpg’);  
%将图像earth.jpg读入MATLAB7.0工作平台,读取数据矩阵为变量RGB
图形图像文件的写入与显示


  • 用imwrite来完成图形图像文件的写人操作: 基本调用格式:imwrite(X,map,filename,fmt)
load clown                %根据MAP格式(MATLAB数据文件格式)装载图像
imwrite(X,map,'clown.jpg')   %保存为一幅包含小丑图像的JPG文件

  • 可用image函数显示图像,其语法格式:
image(C)           image(x,y,C)          image(…,’PropertyName’,PropertyValue, …)
image(’PropertyName’,PropertyValue, …)     handle=image(…)
函数imagesc与image函数类似,但是它可以自动标度输入数据
load clown       %根据MAP格式(MATLAB数据文件格式)装载图像
image(10,10,X)   %显示一幅小丑图像,图像的左上角坐标为(0,0)
colormap(map)   %

  • 高级图像显示函数imshow,其语法格式为:
imshow(I,n)        imshow(I,[low,high])        imshow(BW)        imshow(X,map)
imshow(RGB)      imshow(…,display_option)   imshow(x,y,A, …)    imshow filename
h=imshow(…)

I=imread('rice.png')
J=filter2([1 2;-1 -2],I)  %用模板[1 2;-1 –2]对图像滤波
imshow(I)
figure,imshow(J,[])
用图像阅读器显示图像

图像阅读器的开关

1.在图像阅览器中显示图像:imview
moonfig=imread('moon.tif');
imview(moonfig)

imview('moon.tif')

  • 指定图像的起始大小 (1) 设置Imviewinitialmaginfication属性为‘fit’,默认值为100,100%显示 (2) 在imview函数中使用Initialmagnification参数,指定值为“fit”。
imshow(X,map,'InitialMaginfication','fit')
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2025-5-14 22:11 , Processed in 0.215018 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表