How to draw a line that separate white pixels in percentages on a image

1 view (last 30 days)
I want to draw a vertcal line that can seperate white pixels in the image with the percentages as shown in the figure. I can't use regionprops since each white pixel information is important to me. I have attached binary image for reference. Thanks in advance.

Accepted Answer

DGM
DGM on 9 Feb 2022
Edited: DGM on 9 Feb 2022
Something like this should work:
A = imread('https://www.mathworks.com/matlabcentral/answers/uploaded_files/888330/binaryimage1.jpg');
A = rgb2gray(A)>128;
lhsfrac = 0.95;
% find the transition point
Aprof = cumsum(sum(A,1));
breakpoint = find(Aprof >= Aprof(end)*lhsfrac,1,'first')
breakpoint = 191
% plot the profile for sake of clarity
figure(1)
plot(Aprof); hold on
plot([0 numel(Aprof)],[1 1]*Aprof(end)*lhsfrac,':')
% show the image and plot a line over it
figure(2)
imshow(A); hold on
plot([1 1]*breakpoint,[0 size(A,1)])
% if you want to actually embed the line in the image
figure(3)
B = im2uint8(repmat(A,[1 1 3]));
B(:,breakpoint,:) = repmat(permute([1 0.2 0.8]*255,[1 3 2]),[size(A,1) 1 1]);
imshow(B);

More Answers (0)

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by