[英]Crop and transform image in Matlab
我正在嘗試裁剪圖像但不是使用矩形(如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);
我怎么能用這兩件事來裁剪出一個四角形多邊形的區域呢?
首先,轉換圖像進行裁剪是個壞主意。 當應用單應性時,它將導致由於插值引起的偽像改變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放在面具之外; 你可以根據需要改編。
在MATLAB中嘗試“impoly”函數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.