Intensity of each pixel frawn on an image
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I want to find out the intensity of every pixel if i draw a line on one image.
Im using the below code for drawing a line. Initial valu of (xi,yi) = (353,216) and the final value is (xf,yf) = (553,216).
I = imread('figure63.png');
figure, imshow(I)
hold on
p1 = [353,216];
p2 = [553,216];
plot([p1(1),p2(1)],[p1(2),p2(2)],'Color','m','LineWidth',1)
If I want intensity of every pixel of this line as a column matrix, how do I use imaprofile or I need to use something else?
0 commentaires
Réponse acceptée
KSSV
le 6 Déc 2021
Modifié(e) : KSSV
le 6 Déc 2021
Read about interp2. You can use interp2 for this.
I = imread('figure63.png');
[m,n,p] = size(I) ;
[X,Y] = meshgrid(1:n,1:m) ;
% Line points
p1 = [353,216];
p2 = [553,216];
% Form a line using polyfit
p = polyfit([p1(1);p2(1)],[p1(2);p2(2)],1) ;
x = linspace(p1(1),p2(1)) ;
y = polyval(p,x) ;
%
iwant = zeros(length(x),p) ;
% Assuming image to RGB
for i = 1:p
iwant(:,i) = interp2(X,Y,I(:,:,i),x,y)
end
end
figure, imshow(I)
hold on
plot(x,y,'Color','m','LineWidth',1)
3 commentaires
KSSV
le 6 Déc 2021
It is problem with inputs to polyfit, you need to input like shown:
p = polyfit([p1(1);p2(1)],[p1(2);p2(2)],1) ;
Edited the code too.
Plus de réponses (1)
Walter Roberson
le 6 Déc 2021
I(p1(2), p1(1):p2(1))
except you should use min and max to ensure that you get increasing order for the column numbers.
This depends on the y coordinates being the same and being integers, a horizontal line. You could use similar logic for a vertical line.
If you need a slanted line then you need improfile or go directly for interp2 which is what improfile uses internally.
Voir également
Catégories
En savoir plus sur Denoising and Compression dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!