2015-03-12 3 views
0

Я работаю над проектом, где я должен сначала нормализовать изображение, т.е. преобразовать диапазон пикселей моего изображения с 16-235 (поскольку это только компонент яркости изображения, значения пикселей всегда определяется в диапазоне 16-235) до 0 - 1, затем я выполняю dwt и idwt на изображении после обработки, я хочу снова отображать эти значения пикселей от 0 - 1 до 16 - 235. т. е. если значение пикселя равно 1 значению то он должен быть сохранен в матрице изображения как 235. , для которого я пробовал использовать следующий код в формате Matlab, этот код отлично работает при денормализации изображения сразу после нормализации, но вывод становится полностью белым, если я использую этот код после выполнения dwt и idwt.как denormalize изображение в matlab

for j = 1:1:361 
    for k=1:1:361     %dimensions of my matrix 
     if(distorted1(j,k)~=0) 
      temp=distorted1(j,k); 
      temp1=temp/0.0045; 

      distorted1(j,k)=int8(temp1)+1; 
     end 
    end 
end 
imshow(distorted1); 
+2

Вы должны визуализировать изображение 'imshow (distorted1, [])', а не 'imshow (distorted1)'. Обычное старое 'imshow' без' [] 'будет насыщать значения' double' до белого, если они превышают максимальное значение '1.0'. – eigenchris

+0

спасибо большое, это сработало ... – Kristen

ответ

3

кажется, что результат вашего idwt имеет тип double (или single) и не int больше. конвертировать в uint8, а затем imshow it.

Попытка imshow изображение типа double/single насытит все пиксели со значениями больше, чем 1,0 (а не 255 для изображений типа int).

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