Distance between pixels and axes in a image
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Francesco Pignatelli
il 11 Gen 2023
Commentato: Francesco Pignatelli
il 11 Gen 2023
Hi all,
I have a small issue related to image processing. I have the following binarized image:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1259635/image.png)
and I would like to compute the distance between the bottom row and the fist pixel=1 for each column of the image. In other words, I would like to compute the length of the following red lines:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1259640/image.png)
Any clue?
Best
0 Commenti
Risposta accettata
DGM
il 11 Gen 2023
Modificato: DGM
il 11 Gen 2023
Consider the example:
% a binarized image
inpict = imread('monojagblob.png');
mask = imbinarize(inpict);
imshow(mask)
% pad the array to guarantee no object pixels are on the boundary
mask = padarray(mask,[1 1],0,'both');
% distance to west edge
[~,Wdist] = max(mask,[],2);
Wdist = Wdist-1; % correct for padding
Wdist(Wdist==0) = NaN; % zero distances are invalid (no object here)
plot(Wdist)
% distance to east edge
[~,Edist] = max(fliplr(mask),[],2);
Edist = Edist-1; % correct for padding
Edist(Edist==0) = NaN; % zero distances are invalid (no object here)
plot(Edist)
% distance to north edge
[~,Ndist] = max(mask,[],1);
Ndist = Ndist-1; % correct for padding
Ndist(Ndist==0) = NaN; % zero distances are invalid (no object here)
plot(Ndist)
% distance to south edge
[~,Sdist] = max(flipud(mask),[],1);
Sdist = Sdist-1; % correct for padding
Sdist(Sdist==0) = NaN; % zero distances are invalid (no object here)
plot(Sdist)
Note that these are the locations of the first nonzero pixel, not the number of zero pixels prior to it. If you want the latter, subtract 1.
Più risposte (0)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!