How to plot intensity profile of an image
71 ビュー (過去 30 日間)
古いコメントを表示
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.
採用された回答
Akira Agata
2018 年 3 月 22 日
Like this?
I = imread('Capture.PNG');
x = [0 size(I,2)];
y = [size(I,1)/2 size(I,1)/2];
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')
5 件のコメント
Warid Islam
2019 年 7 月 9 日
Hi,
How can we plot the intensity profile of the same image along the vertical direction instead of the horizontal direction? Thank you.
その他の回答 (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 件のコメント
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 日
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
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 日
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 日
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?
参考
カテゴリ
Help Center および File Exchange で Surface and Mesh Plots についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!