闲鱼技术01 发表于 2021-12-17 15:15

MATLAB图像处理v2

特定区域处理

区域的指定

在进行图像处理时,有时只要对图像中某个特定区域进行处理,并不需要对整个图像进行处理。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指定的多边形区域。
=roipoly(…)
其功能是:交互选择多边形区域,并返回多边形角点的坐标。
=roipoly(…)
其功能是:交互选择多边形区域后,还返回多边形顶点在指定的坐标系X-Y下的坐标。
例:根据指定的坐标选择一个六边形区域的程序清单:
I=imread('eight.tif');
c=;
r=;
BW=roipoly(I,c,r);
figure(1);imshow(I);
figure(2);imshow(BW);

[*]其他选择方法 MATLAB图像处理工具箱中提供了可以实现按灰度选择区域的函数roicolor函数,其语法格式为:
BW=roicolor(A,low,high)
其功能是:按指定的灰度范围分割图像,返回二值掩模BW,为所要选择区域的灰度范围。如果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=;
r=;
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选择区域。
=roifill(…)
其功能是:在填充区域的同时还返回掩模图像BW。
J=roifill(x,y,I,xi,yi)
=roifill(…)
其功能是:在指定的坐标系X-Y下填充由向量xi,yi指定的多边形区域。
例:下面是一个为填充指定的区域程序清单:
I=imread('rice.tif');

I=imread('rice.png');
c=;
r=;
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)                     =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)
=imread(…)(CUR,ICO,and PNG only)
最基本调用格式:
=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,)      imshow(BW)      imshow(X,map)
imshow(RGB)      imshow(…,display_option)   imshow(x,y,A, …)    imshow filename
h=imshow(…)

I=imread('rice.png')
J=filter2(,I)%用模板对图像滤波
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')
页: [1]
查看完整版本: MATLAB图像处理v2