Выравнивание гистограммы MATLAB на изображениях GIF

У меня возникли некоторые проблемы с пониманием того, как изменить цветовую карту изображения GIF в градациях серого после выполнения выравнивания гистограммы на изображении. Процесс совершенно прост с типами сжатия изображений, которые не имеют связанной карты цветов, например JPEG, и я заставил его работать с изображениями JPEG в градациях серого.

clear
clc
[I,map] = imread('moon.gif');
h = zeros(256,1);    %array value holds number of pixels with same value
hmap = zeros(256,1);
P = zeros(256,1);    %probability that pixel intensity will appear in image
Pmap = zeros(256,1);
s = zeros(256,1);    %calculated CDF using P
smap = zeros(256,1);
M = size(I,1);
N = size(I,2);
I = double(I);

Inew = double(zeros(M,N));
mapnew = zeros(256,3);
for x = 1:M;
for y = 1:N;
for l = 1:256;
    %count pixel intensities and probability 
end
end
end

for j = 2:256
    for i = 2:j
        %calculate CDF of P
    end
end
s(1) = P(1);
smap(1) = Pmap(1);

for x = 1:M;
for y = 1:N;
for l = 1:256;
   %calculates adjusted CDF and sets it to new image
end
end
end
mapnew = mapnew/256;
Inew = uint8(Inew);
I = uint8(I);
subplot(1,2,1), imshow(Inew,map);     %comparing the difference between original map 
subplot(1,2,2), imshow(Inew,mapnew);  %to'enhanced' colormap, but both turn out poorly

Все хорошо с точки зрения выравнивания реального изображения, но я не уверен, что нужно изменить в цветовой карте. Я попытался выполнить те же операции с палитрой, что и с изображением, но без кубиков.

Извините, что я не могу публиковать изображения из-за моей низкой репутации, но я постараюсь предоставить всю информацию, которую смогу, по запросу.

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


person Chris W    schedule 22.09.2013    source источник
comment
Предложение: вы можете загружать изображения на imgur и публиковать ссылки. Более привилегированный пользователь может встроить их в ваш вопрос для вас, пока вы не наберете репутацию, чтобы сделать это самостоятельно... и добро пожаловать в ТАК!   -  person Eitan T    schedule 22.09.2013
comment
если он работает с обычными изображениями (оттенки серого или истинный цвет), вы всегда можете использовать ind2gray или ind2rgb для преобразования изображения и соответствующей ему цветовой карты в первый вид, а затем выполнить свою процедуру. Fwiw MATLAB уже имеет функцию histeq, которая работает со всеми типами изображений.   -  person Amro    schedule 22.09.2013
comment
Всем спасибо за помощь! Функция ind2gray работает как шарм. Это было задание класса, поэтому о histeq не могло быть и речи, за исключением того, чтобы убедиться, что ваш код работает. Я также буду помнить об использовании imgur для предоставления изображений. Еще раз, спасибо за помощь.   -  person Chris W    schedule 23.09.2013


Ответы (1)


person    schedule
comment
добро пожаловать в SO и спасибо за ваш ответ. Обратите внимание, что это англоязычный сайт. Не могли бы вы отредактировать свой ответ, чтобы включить комментарии только на английском языке? - person Shai; 20.11.2013