How can i somehow autofill black-spots in an RGB image.

1 回表示 (過去 30 日間)
JAI PRAKASH
JAI PRAKASH 2018 年 6 月 4 日
回答済み: Image Analyst 2018 年 6 月 5 日

採用された回答

Aditya Adhikary
Aditya Adhikary 2018 年 6 月 5 日
These may help: imfill and regionfill.
  1 件のコメント
JAI PRAKASH
JAI PRAKASH 2018 年 6 月 5 日
編集済み: JAI PRAKASH 2018 年 6 月 5 日
Hey Thanks, But it does not work for complex problems
I used following code:
newimage=imread('City_AskAutofill.jpg');
R = newimage(:,:,1); % splitting RGB because regionfill need grayscale.
G = newimage(:,:,2);
B = newimage(:,:,3);
mask = uint8(R) < 2;
mask = imfill(mask,'holes');
mask = imerode(mask,strel('disk',10));
mask = imdilate(mask,strel('disk',20));
R_autofill = regionfill(R,mask);
mask = uint8(G) < 2;
mask = imfill(mask,'holes');
mask = imerode(mask,strel('disk',10));
mask = imdilate(mask,strel('disk',20));
G_autofill = regionfill(G,mask);
mask = uint8(B) < 2;
mask = imfill(mask,'holes');
mask = imerode(mask,strel('disk',10));
mask = imdilate(mask,strel('disk',20));
B_autofill = regionfill(B,mask);
newimage_autofill(:,:,1)=R_autofill;
newimage_autofill(:,:,2)=G_autofill;
newimage_autofill(:,:,3)=B_autofill;
imtool(newimage_autofill) % this is the image which you are seeing above.
But this approach is not effective on other problem, like I have mentioned further below.
How can I improve this approach. Thanks

サインインしてコメントする。

その他の回答 (1 件)

Image Analyst
Image Analyst 2018 年 6 月 5 日
MATLAB does not have a sophisticated region filling algorithm like the bandage tool in Photoshop. If you want/need something like that, use Photoshop or figure out what algorithm they used and program it up yourself.

製品


リリース

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by