How can I delete part of a binary image?

11 ビュー (過去 30 日間)
Timilehin Oyinloye
Timilehin Oyinloye 2022 年 7 月 25 日
コメント済み: Timilehin Oyinloye 2022 年 7 月 25 日
Hello,
I have several images with different shape and sizes. I am trying to make a code to delete the wider part (lower region) in each of the images. So far, I have been able to change the original images to a binary image.
The part of the image I want to delete is the area within red box in the second picture (Image2.JPG) I attached, i.e. the part that appears like fingers.
Thank you.

採用された回答

DGM
DGM 2022 年 7 月 25 日
編集済み: DGM 2022 年 7 月 25 日
If all you want to do is put a black region over that part of the image:
myimage(310:end,150:300,:) = 0;
Otherwise, you'll have to describe how the region is to be replaced.
If this is supposed to be automated, you'll have to describe what image features can be relied upon and define the criteria used to locate the region that needs to be replaced.
  4 件のコメント
DGM
DGM 2022 年 7 月 25 日
This might be a start:
A = imread('image.jpeg');
A = rgb2gray(A);
sz = size(A);
mk = imbinarize(A);
mk = bwareaopen(mk,100);
mk = imfill(mk,'holes');
mk = imclose(mk,strel('disk',15));
imshow(mk)
w = sum(mk,1); % get width of object (vertical)
w = smooth(w,10); % smooth data
plot(w); hold on
% crop off everything outside the region of interest
% by replacing with NaN
[~,mxidx] = max(w);
w(1:mxidx+20) = NaN;
w(round(sz(2)/2):end) = NaN;
plot(w)
% find location of first local minimum within ROI
[~,mnidx] = findpeaks(-w);
mnidx = mnidx(1);
% use that index and the mask
% to find a box around the bad part
mk = imdilate(mk,strel('disk',15));
mk(:,mnidx:end) = 0;
mk(any(mk,2),any(mk,1)) = 1;
% create output
B = A;
B(mk) = 0;
% show output
figure
imshow(B)
% overlay original and censored copy for comparison
figure
imshow(imfuse(A,B))
Of course, if the narrowest part isn't always in that area, then this won't work. You might be able to use the example as a starting point though.
Timilehin Oyinloye
Timilehin Oyinloye 2022 年 7 月 25 日
Thank you very much.
This is helpful.

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

その他の回答 (1 件)

NN
NN 2022 年 7 月 25 日
Hi,
As per my understanding, you want to delete some part of an image.
Please find some of the existing solutions to your problem :
  1. https://in.mathworks.com/matlabcentral/answers/293816-how-to-delete-some-part-of-an-image?s_tid=answers_rc1-1_p1_MLT
  2. https://in.mathworks.com/matlabcentral/answers/154845-how-to-delete-selective-part-of-image?s_tid=answers_rc1-2_p2_MLT
Hope this helps. Please let me know if the problem still persists.
Regards,
Narvik
  1 件のコメント
Timilehin Oyinloye
Timilehin Oyinloye 2022 年 7 月 25 日
Thank you very much for the response.

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

製品


リリース

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by