How to find intensity profile of multiple lines in an image?
5 次查看(过去 30 天)
显示 更早的评论
I have an image on which I want to find the intensity profiles of 50 lines along the vertical direction. Below is my code and the result.
I = imread('Intensity1.jpg');
x=[size(I,2)/2 size(I,2)/2];
y=[0 size(I,1)];
n = 50;
c = improfile(I,x,y,n);
figure
subplot(2,1,1)
imshow(I)
hold on
plot(x,y,'r')
subplot(2,1,2)
plot(c(:,1,1),'r')
hold on
plot(c(:,1,2),'g')
plot(c(:,1,3),'b')
The graph above probably shows the intensity profile of 50 points along the same vertical direction. Whereas I want to find the intensity profiles of 50 equally spaced vertical lines of the image above. Any help would be appreciated.
2 个评论
Walter Roberson
2019-8-1
improfile() internally does an interp2() along each of the color panes independently. You can do the same thing to evaluate all of the values at once.
I would suggest that for your purposes it would probably be good enough to
whichcols = round(linspace(1,size(I,2),50+1));
profiles = I(:, whichcols(1:end-1), :);
adjust the 50+1 and the 1:end-1 depending upon whether you want the "equally spaced to exactly start at the first and exactly end at the last, or if instead you want to divide into 50 bands that have the same amount of image to their "right".
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Image Processing Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!