【问题标题】:Crop and transform image in Matlab在 Matlab 中裁剪和变换图像
【发布时间】:2013-12-26 10:49:52
【问题描述】:

我正在尝试裁剪图像,但不是使用矩形(如imcrop()),而是使用具有四个角的多边形。我进行了很多搜索,发现我需要执行单应性来将裁剪的多边形重新调整为矩形。

所以我使用imcrop() 来选择图像中的多边形:

img = imread('pout.tif');
imshow(img);
h = impoly;
position = wait(h);
x1 = min(position(:, 1));
x2 = max(position(:, 1));
y1 = min(position(:, 2));
y2 = max(position(:, 2));
BW = createMask(h);

我如何使用这两个东西来裁剪出一个具有四个角的多边形区域?

【问题讨论】:

标签: image matlab image-processing crop homography


【解决方案1】:

首先,转换图像以进行裁剪是一个坏主意。这将导致在应用单应性时由于插值而改变 ROI 的内容。另外,如果有一天你想变成超过 4 个点定义的 ROI,那么这种方法就不再适用了。

其次,我对你的脚本做了一些小改动,如下所示:

img = imread('circuit.tif');
imshow(img);
h = impoly;
position = wait(h);
boundbox = [min(position(:,1)), ....
      min(position(:,2)), ....
      max(position(:,1))-min(position(:,1)), ....
      max(position(:,2))-min(position(:,2))];
BW = createMask(h);
img = imcrop(uint8(BW).*img, boundbox);
imshow(img)

您几乎就在那里......只需掩盖您想要的图像的 ROI 并使用 ROI 的边界框进行裁剪。在这里,它把 0 放在掩码之外;如果你愿意,你可以做出不同的调整。

【讨论】:

    【解决方案2】:

    在 MATLAB 中尝试“impoly”函数

    参考http://www.mathworks.in/help/images/ref/impoly.html

    【讨论】:

    • 从问题来看,OP已经尝试过impoly
    • @nkjt 那不是强制功能..首先参考上面给出的链接
    • 您的意思是第一个语法示例 h = impoly 出现在上面的 OP 代码中的链接?
    猜你喜欢
    • 2016-12-05
    • 1970-01-01
    • 2013-04-20
    • 2012-02-12
    • 2013-03-08
    • 2014-03-27
    • 2014-10-20
    • 2015-02-02
    相关资源
    最近更新 更多