我有形象的面具,我已經爲波紋管這一形象上定義的邊界:如何填寫邊界跟蹤?
現在我想刪除像素指出,邊界,並得到這樣的面具:
邊界是70 * 2的矩陣。 ,圖像大小爲4000 * 3000。
我不能在matlab中使用imfill
,因爲我的邊界是離散的!
你知道我可以在MATLAB中做到嗎?
我有形象的面具,我已經爲波紋管這一形象上定義的邊界:如何填寫邊界跟蹤?
現在我想刪除像素指出,邊界,並得到這樣的面具:
邊界是70 * 2的矩陣。 ,圖像大小爲4000 * 3000。
我不能在matlab中使用imfill
,因爲我的邊界是離散的!
你知道我可以在MATLAB中做到嗎?
您可以使用inpolygon
來獲得輪廓的蒙板表示。
% Get the X/Y Coordinates of all points in the image
[xx, yy] = meshgrid(size(img, 2), size(img, 1));
% Create a mask with 1's inside the boundary
mask = inpolygon(xx, yy, boundary(:,1), boundary(:,2))
如果您有圖像處理工具箱,你可以使用poly2mask
mask = poly2mask(boundary(:,1), boundary(:,2), size(img, 1), size(img, 2));
然後,您可以使用此面膜零出一切在它之外。
img = img .* mask;
它應該是:'[XX,YY] = meshgrid(1:尺寸(IMG,1),1: size(img,2)); '但是,使用我的代碼和這個變化我無法得到結果。它不停止運行或換句話說它掛起! – user6726469
@ user6726469不,「meshgrid」輸入總是反轉。對於非常大的圖像,它絕對需要一段時間。你的圖像大小是多少? – Suever
它是3328x4096。當我將其改變爲我所說的時候,需要很長時間。當我運行urs時,它給出了掩碼! – user6726469
[洪水填充(https://en.wikipedia.org/wiki/Flood_fill) – Jeon