0

我正在做一个项目,我必须首先对图像进行归一化,即将图像的像素范围从 16-235(因为它只是图像的亮度分量,像素值始终定义在 16-235 范围内)到0 - 1 然后我在处理后对图像执行 dwt 和 idwt 我想再次将这些像素值从 0 - 1 映射到 16 - 235。即如果像素值为 1 值,那么它应该存储在图像矩阵中235.为此我尝试了以下matlab代码,当我在规范化后立即对图像进行非规范化时,该代码工作得非常好,但如果我在执行dwt和idwt后使用此代码,则输出变为完全白色。

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);
4

1 回答 1

3

看起来你的结果idwt是类型double( or single) 而int不再是类型了。转换为uint8然后imshow它。

尝试使用/imshow类型的图像会使值大于 1.0 的所有像素饱和(而不是 255 类型的图像)。doublesingleint

于 2015-03-12T15:37:54.990 回答