ROI区域选取,Matlab

一幅图像,我们需要处理的区域可能只占整幅图像的一小部分,通过鼠标进行手动选取,展示图像,并且获得ROI图像的起始行列坐标。

%输入原图像------------------------------------------
img = imread('6.bmp');        %读取原图像
%选取图像的ROI区域-----------------------------------
figure(1);
imshow(img);title('待处理图像');                                         %①
h=imrect;           %鼠标变成十字,用来选取感兴趣区域,图中就会出现可以拖动以及改变大小的矩形框,选好位置后
pos=getPosition(h); %pos有四个值,分别是矩形框的左下角点的坐标 x y 和 框的 宽度和高度
img_ROI = imcrop(img, pos);      %拷贝选取图片,pos[左下角坐标(x,y),宽,高]
figure(2);
imshow(img_ROI);title('激光光条区域(图像ROI区域)');
imwrite(img_ROI,'laser_ROI.bmp');%保存ROI图像                             ② 
row_start = floor(pos(1,2));     %ROI图像的起始行列
column_start = floor(pos(1,1));  %为后面ROI区域坐标转换回原图像坐标值准备

程序中个别算子介绍:

1.imrect——创建可变形矩形
2.使用 imrect 和 imcrop 函数相结合,就可以实现截图功能。
3.

h = imrect;
pos = getPosition(h);
img_ROI = imcrop(img, pos);

这个函数用来获取图象上特定区域的坐标,其中pos的返回值中有四个参数[xmin,ymin,width,height],特定区域的左下角x,y坐标,以及该区域的长宽值。


floor函数
向负无穷方向取整,floor(2.2)=2,floor(-2.2)=-3
程序中选中的框框的角点坐标是相邻两个像素的均值,即是小数(举例:(1 + 2)/ 2 = 1.5),我们需要的是像素级坐标,所以利用floor()取整。
在这里插入图片描述
上面是选取的ROI区域,我们可以看到边缘线之间还有一条线,即出现(**.5)的现象。
在这里插入图片描述

发布了56 篇原创文章 · 获赞 18 · 访问量 3474

猜你喜欢

转载自blog.csdn.net/kangjielearning/article/details/104971821