Гистограмма серого изображения кажется неправильной - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь получить гистограмму этого 256 * 256 изображения в оттенках серого. Grayscale image

Это то, что отображается imhist(img):

Histogram

В абсциссе 1 есть одна вертикальная линия высотой 65536. Мне это не кажется правильным. Я использую imhist неправильно?

Ответы [ 3 ]

0 голосов
/ 14 января 2019

Я работаю с MATLAB R2017a, и следующий код работал для меня. Надеюсь, это поможет вам ...

I=imread('111.png');
imhist(I)
title('Histogram without rgb2gray function in MATLAB')
%%
I=rgb2gray(I);
figure
imhist(I)
title('Histogram with rgb2gray function in MATLAB')

Результат

enter image description here

enter image description here

0 голосов
/ 14 января 2019

Согласно документации :

Для изображений в оттенках серого n бинов гистограммы - это полуоткрытые интервалы ширины A / (n-1).

... где A равно 1 для двойных массивов. То есть для вашего двойного массива ширина ячейки равна 1 / (n-1), а ячейка n содержит диапазон [0,1].

Это неявный диапазон MATLAB для изображений, хранящихся в двойном массиве. Каждый раз, когда вы используете двойной массив в качестве изображения, MATLAB предполагает, что его максимальное значение равно 1.

Вы можете узнать по оси х гистограммы.

Однако ваше изображение, вероятно, имеет большие значения, которые затем попадают в верхнюю корзину.

Одно из решений заключается в том, чтобы при чтении изображения преобразовать его в двойные числа, используя im2double.

Другим решением является использование функции histogram вместо imhist. Эта функция гораздо более гибкая и общая, и делает гистограммы намного лучше. По умолчанию будет построена гистограмма по всему диапазону данных.

0 голосов
/ 14 января 2019

Я использовал функцию imhist и получил правильный результат для гистограммы этого изображения.

Histogram

Сначала я преобразовал его из RGB в оттенки серого, чтобы можно было использовать imhist. Тогда я построил сюжет только самим имхистом. Я использую Matlab R2016a.

Как указано на странице справки Matlab по ссылке ниже, вы можете использовать imhist для построения гистограммы https://www.mathworks.com/help/images/ref/imhist.html

проверьте следующий код:

img = imread('C:\Users\farazpc.ir\Downloads\Telegram Desktop\AVWda.png');
img= rgb2gray(img);
 imhist(img)

Надеюсь, это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...