フィルターのクリア

How to plot a histogram from 0-255

4 ビュー (過去 30 日間)
Changoleon
Changoleon 2016 年 9 月 6 日
コメント済み: Guillaume 2017 年 9 月 11 日
I use img1=imread function to load my image into matlab. The image is 512by512 and the intensity range is 0-255. However the histogram of my image ( which I use imhist(img1) to plot it) has values only at 0 and 1. How is that? I mean when I take a look at the array of my picture, I see numbers varying from 0-255. Is it because I am using imhist? Any idea would be appreciated. and sorry if the question might be very basic for some of you.

採用された回答

Thorsten
Thorsten 2016 年 9 月 6 日
編集済み: Thorsten 2016 年 9 月 6 日
I = imread('cameraman.tif');
imhist(I)
shows values from 0 to 255. Do you change I after imread and before imhist?
  2 件のコメント
Changoleon
Changoleon 2016 年 9 月 6 日
actualy this is how I code: a = double(imread('Wk1_O5_Image017.tif')); is it double?
Thorsten
Thorsten 2016 年 9 月 6 日
Either use
I = imread('yourfile.tif');
imhist(I);
or as Guillaume suggests,
I = im2double(imread('yourfile.tif'));
imhist(I)

サインインしてコメントする。

その他の回答 (2 件)

Guillaume
Guillaume 2016 年 9 月 6 日
Most image processing functions expect double images to be in the range 0-1. If the range is 0-255, matlab expects it to be a uint8 image.
a = im2double(imread('yourimage'));
imhist(a);
should solve your problem. Or keep the image as uint8.

dhafer alhajim
dhafer alhajim 2017 年 9 月 11 日
編集済み: dhafer alhajim 2017 年 9 月 11 日
if you want the value and the range from 0 to 255 a = im2double(imread('your image')); h=uint8(imhist(a));
  1 件のコメント
Guillaume
Guillaume 2017 年 9 月 11 日
@dhifer alhajm
I don't see the point in answering a question that is over a year old. Particularly as your answer is totally incorrect. Because of the call to im2double, the input range is 0-1. As for the uint8(imhist), that's completely silly, any histogram count above 255 will be clamped to 255.
Here's an example:
a = uint8(repelem([0 63 127 255]', [20 40 60 80], 200));
imshow(a);
This is an image with 4000 counts of intensity 0, 8000 of intensity 63, 12000 of intensity 127 and 16000 counts of intensity 255.
>>h = uint8(imhist(im2double(a)))
>>h(1) %counts of intensity 0
ans =
255
>>h(end) %count of intensity 255
ans =
255
The count of all intensities present in the image is 255 according to you.

サインインしてコメントする。

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by