2013-04-14 2 views
1

У меня есть изображение с именем лодка хранится в файле (.mat Boat.mat) Я загрузил файл, используя load('Boat.mat') Если я печатаю imshow(boat) он просто отображает пустое поле. Я могу только просмотреть изображение с помощью imshow(boat,[0 255]). Когда я использую imhist(boat), я снова получаю пустой ящик. Как увидеть гистограмму. Мне нужно увидеть гистограмму. Также я не могу использовать histeq(boat) для выравнивания гистограммы.Imhist в MATLAB не отображает гистограмму

Любая помощь будет оценена по достоинству. Благодаря

Вот ссылка на Boat.mat файл http://www.engr.colostate.edu/ECE513/SP11/Boat.mat

ответ

5

По умолчанию imshow предполагает плавающей точкой изображения со значениями от 0 до 1, поэтому ваше изображение (со значениями от 0 до 255) отображается полностью как белый - все значения больше 1. Как вы обнаружили, вы можете заставить imshow масштабировать значения по-разному, но, вероятно, это проще, если вы только сначала пересканируете изображение и сохраните его так:

boatDbl = boat/255; 

figure; 
imshow(boatDbl); 

figure; 
imhist(boatDbl); 

EDIT: Как отметил Шай, это происходит потому, что imshow и другие предсказывают диапазон значений, основанный на типе данных матрицы - поскольку ваша матрица boat является double, они принимают диапазон от 0 до 1. Поэтому альтернативное решение заключается в преобразовании матрицы к integer типа, который сделает imshow предположить, диапазон от 0 до 255:

boat = uint8(boat); 
+2

можно также работать с 'типа uint8':' лодка = uint8 (катер); '. – Shai

+0

Хорошая точка, спасибо. – jazzbassrob

+0

Спасибо, что это помогло. – Abhilash

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