How to plot intensity profile of an image
이전 댓글 표시
I want to plot the intensity profile of this image. I tried using improfile but I don't really know how it works. Can anyone help?

댓글 수: 1
Walter Roberson
2018년 3월 22일
An intensity profile along which direction?
If you want a profile along a horizontal or vertical line then just use array indexing to extract the vector, and then plot it.
채택된 답변
추가 답변 (4개)
Akira Agata
2019년 7월 9일
Hi Warid-san,
You can do it by the same way, like the following.
I = imread('Capture.PNG');
% Since size(I,2)/2 = 215.5, I have set the value '215' directly for x
x = [215 215];
y = [0 size(I,1)];
c = improfile(I,x,y);
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')

댓글 수: 4
Warid Islam
2019년 7월 10일
Hi Akira,
Thank you very much for the help.
Manoj Kumar
2020년 3월 23일
Hi,
if there are more than one spot, say 5 (randomly distributed), then how to plot the intensity across all of them?
Thanks
Akira Agata
2020년 3월 23일
Hi Manoj-san,
Could you upload a sample image file for trying?
Vivek
2022년 8월 10일
Hi Akira San,How Can you plot the 1D profile of a rectangular region instead of just line ?Tx,vivek
Lorenzo Gentili
2019년 8월 20일
0 개 추천
Hi Akira,
I'm trying to obtain an intesity profile of the image below, but I need more than a line. I would like to have at least 5 vertical line in order to understand how the intesity vary in different point of the image ( lets say the 2 boundaries, the center and 2 point between the boundaries and the center). Is it possible to obtain an unique intensity profile that is the sum of 5 intesity profile obtained by the verical lines ?
Thank you for your help
Lorenzo 

댓글 수: 4
Image Analyst
2019년 8월 20일
To get a mean vertical profile between two columns:
verticalProfile = mean(grayImage(:, column1:column2), 2);
To get a mean horizontal profile between two rows:
horizontalProfile = mean(grayImage(row1:row2, :), 1);
Lorenzo Gentili
2019년 8월 20일
Thank you for your answer.
YOGITAA YOGITAA
2022년 3월 2일
could ypu please share your code, i have the same problem
Image Analyst
2022년 3월 3일
편집: Image Analyst
2022년 3월 3일
@YOGITAA YOGITAA, here is the code:
verticalProfile = mean(grayImage(:, column1:column2), 2);
horizontalProfile = mean(grayImage(row1:row2, :), 1);
r r
2020년 5월 15일
편집: Walter Roberson
2020년 5월 16일
0 개 추천
I have image of a tumor in it and I want to do it the same way https://www.mathworks.com/matlabcentral/answers/389889-how-to-plot-intensity-profile-of-an-image
, but every time the response is
'improfile' requires Image Processing Toolbox.
Error in line (line 4)
c = improfile(I,x,y);
댓글 수: 1
Walter Roberson
2020년 5월 16일
You need the Image Processing Toolbox to use improfile()
improfile() uses linspace() to create vectors of coordinates between the two endpoints, and uses interp2() to interpolate at the coordinates; it does the interpolation once for each color channel.
The question then becomes what coordinates you should interplate at
fransec
2020년 6월 9일
0 개 추천
Hello everybody,
Anyone knows how to make an image profile like ones you showed, but but along the diagonal of an image?
Thank you so much.
댓글 수: 2
Walter Roberson
2020년 6월 9일
[rows, cols, ~] = size(YourImage);
n = min(rows,cols);
prof_diag = improfile(YourImage, [1 n], [1 n]); %diagonal
prof_antidiag = improfile(YourImage, [n 1], [1 n]); %anti-diagonal
Christopher Gordon
2021년 2월 22일
Hey! Question along the same lines. I have 30 vertical lines across a 1024 column image/matrix. Is there a way that I can interpolate/extrapolate the remaining columns to get the entire image/matrix?
카테고리
도움말 센터 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
