2015-07-08 2 views
0

Итак, это мой код. Переменная img - это исходное изображение. Переменная eq является уравненным изображением.Как построить выровненную гистограмму изображения с помощью Python?

from matplotlib.pyplot import imread, imshow, show, subplot, title, get_cmap, hist 
from skimage.exposure import equalize_hist 


img = imread('images/city.tif') 
eq = equalize_hist(img) 

subplot(221); imshow(img, cmap=get_cmap('gray')); title('Original') 
subplot(222); hist(img.flatten(), 256, range=(0,256)); title('Histogram of  origianl') 
subplot(223); imshow(eq, cmap=get_cmap('gray')); title('Histogram Equalized') 
subplot(224); hist(eq.flatten(), 256, range=(0,256)); 

show() 

Теперь, когда я запускаю, код, я получаю гистограмму оригинала просто отлично. Но гистограмма уравнивания неверна. Это все из моего выхода

enter image description here

Что я делаю не так?!?!

EDIT: встроенные команды MATLAB из the answer прекрасно работает для конкретного изображения

enter image description here

+1

О, вы забыли '=' во втором вызове 'hist()'. Существует 'range (0, 256)' вместо 'range = (0, 256)' –

+0

Я исправил его, спасибо. Это просто выводит «слишком много значений для распаковки». Это не влияет на проблему с гистограммой – Mustafa

+2

Возможно, значения находятся только между 0 и 1. – User

ответ

2

Похоже, что это преобразование изображения из формата uint8 (целые значения от 0 до 255 включительно) до float32 или float64 (значения с плавающей запятой между 0 и 1 включительно). Попробуйте eq = np.asarray(equalize_hist(img) * 255, dtype='uint8').

+0

Благодарю вас, мистер Фуз. Он отлично работает – Mustafa

Смежные вопросы