注册 |登录

东北大学嵌入式技术实验室论坛论坛数据融合与图像识别技术 › 查看主题

776

查看

3

回复
返回列表

Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

最后登录
2010-7-8 
贡献
83  
注册时间
2009-4-28 
阅读权限
100 
精华
积分
83 
帖子

博士 实验室成员

go

[基础知识] 图像的几何操作及基于区域的处理

1#
发表于 2009-12-9 11:45 | 只看该作者 | 倒序看帖 | 打印
1.图像的插值缩放
函数imresize实现图像的放大与缩小。缺省插值方法为最近邻插值方法。格式如下:
B=imresize(A,m,method);发大m倍
B=imresize(A,[mrows,ncols],method);返回mrows行,ncols列的图像。
B=imresize(…,method,n)
B=imresize(…,method,h);用用户设计的插值核h进行插值,h可以看作时一个二维FIR滤波器。
Method:可以选择’nearest’最近邻法,’bilinear’双线性插值,’bicubic’双三次插值。
在使用bilin和bicubic方法缩小图像时,为消除引入的高频成份,函数使用了一个前端平滑滤波器,缺省滤波器大小为11×11,可以通过参数n指定滤波器尺寸。
2.图像的旋转操作
旋转操作函数为imrotate,格式如下:
B=imrotate(A,angle,method)
B=imrotate(A,angle,method,’crop’)
Method为三种插值方法之一,angle旋转角度,crop是否旋转后实现裁剪。
3.图像的剪切
函数imcrop实现对图像的剪切操作。格式如下:
B=imcrop(A);
B=imcrop(X,map)
B=imcrop(RGB)
以上实现交互式的对灰度图像,索引图像和真彩色图像的剪切操作。
B=imcrop(I,rect)
B=imcrop(A,map,rect)
B=imcrop(RGB,rect)
分别指定举行区域rect剪切图像,rect是一个4元向量[xmin,ymin,width,height]。[B,rect]=imcrop(…)
[x,y,B,rect]=imcrop(..)返回剪切框参数。
4.基于区域的图像处理
要对一幅图像的特定的区域实现处理时,首先要定义这个感兴趣的区域。在Matlab中,对这个特定区域的定义是通过创建一个二进制的mask(为一幅二进制图像)来实现的。该mask图像与原图像具有相同的尺寸,所选定的区域的象素在mask中的值为1(即白色),其余部分象素为0(黑色)。这样,通过mask图像实现对特定区域的选择。
(1)多边形选择法
函数roipoly可以设定一个多边形区域。格式如下:
BW=roipoly(I,c,r);表示用向量c,r来指定多边形各顶点的X,Y轴的坐标。
BW=roipoly(I);交互式选择多边形区域,鼠标左键选择顶点,空格或Del键盘取消选择,回车确认。
BW=roipoly(x,y,I,xi,yi);指定坐标系X,Y瞎选择由向量xi,yi指定的多边形区域。
[BW,xi,yi]=roipoly(…)表示交互的选择多边形区域,并返回多边形各顶点坐标。
[x,y,BW,xi,yi]=roipoly(…)
返回二值图像,选中区域为白色。
如:
>> I=imread('d:\2.jpg');
>> c=[222 272 300 270 221 194];
>> r=[21 21 75 121 121 75];
>> BW=roipoly(I,c,r);
>> imshow(I);
>> figure;
>> imshow(BW);
(2)灰度选择法
用roicolor()函数来根据颜色和灰度设定感兴趣区域。格式如下:
BW=roicolor(A,low,high);指定灰度范围分隔图像;
BW=roicolor(A,v);表示按照向量v中指定的灰度值来选择区域。
如选择灰度在150~200之间的图像中的区域。
>> A=rgb2gray(I);
>> BW=roicolor(A,150,200);
>> imshow(A);
>> figure,imshow(BW);
(3)其他选择方法
出来使用以上方法生成的mask生成图像外,还可以选择任意的二值图像来作为mask图像。如想对一个数据矩阵为I的灰度图像进行过虑,过虑时只滤去灰度值大于200的象素,则可以使用下面的命令生成一个合适的mask。
>> BW=(A>200);
(4)对指定区域的滤波
用roifilt2实现对指定区域的滤波。格式如下:
J=roifilt2(h,I,BW);使用滤波器h对图像I用mask选择的区域进行滤波;
J=roifilt2(I,BW,fun);对图像I中用mask选择的区域做函数运算fun,其中fun时描述函数运算的字符串,参数为P1,P2…返回图像J在选中区域的象素I经fun运算的结果,其余部分的象素值为I的原始值。
J=roifilt2(I,BW,fun,P1,P2,…)
如:BW为(1)中区域
>> I=rgb2gray(I);
>> J=roifilt2(h,I,BW);
>> imshow(J)
(5)对指定区域的填充
函数roifill实现对指定区域的填充。格式如下:
J=roifill(I,c,r);表示用向量c,r来指定多边形填充,各顶点的X,Y轴的坐标。
J=roifill(I);交互式选择多边形填充区域,鼠标左键选择顶点,空格或Del键盘取消选择,回车确认。
J=roifill(I,BW);表示填充由BW决定的Mask图像选择的区域。
[J,BW]=roifill(…);便是在填充区域的同时返回代表mask图像的数据矩阵BW
J=roifill(x,y,I,xi,yi);
[x,y,J,BW,xi,yi]=roifill(…)

TOP

管理员

唯心且唯物,两极亦模糊.

Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

最后登录
2010-9-3 
贡献
1243  
注册时间
2009-4-24 
阅读权限
200 
精华
积分
1243 
帖子
514 

实验室成员 博士 勤奋的贡献者 论坛技术组

2#
发表于 2009-12-9 13:20 | 只看该作者
有句老话叫历史总是惊人的相似,不过今天已被改为历史总是雷人地相似。

TOP

Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

最后登录
2010-8-8 
贡献
282  
注册时间
2009-6-3 
阅读权限
100 
精华
积分
282 
帖子
262 

博士 实验室成员

3#
发表于 2009-12-10 08:02 | 只看该作者
是MATLAB吗?

TOP

超级版主

robber

Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8

最后登录
2010-9-3 
贡献
1518  
注册时间
2009-4-26 
阅读权限
150 
精华
积分
1518 
帖子
749 

授业之心 黑曜石十字勋章 勤奋的贡献者 博士 实验室成员

4#
发表于 2009-12-11 18:05 | 只看该作者
蔡威回来,物联网工程!!

TOP

东北大学嵌入式技术实验室论坛 |联系我们

GMT+8, 2010-9-3 18:12, Processed in 0.039898 second(s), 9 queries.

Powered by Discuz! X1

© 2001-2010 Comsenz Inc.