因此,在读入这类文件的时候,要把colormap也读进来,就是上面程序中的map变量。
在matlab中,设置colormap用的函数就是colormap。因此不适当的设置会使图片颜色异常。
[i,lcmp]=imread('f:\tank.bmp')%=======读取图像 显示图像imshow(i,lcmp)
ii=im2double(i) %=====将图像矩阵类型转换为double(图像计算很多是不能用整型的)
i1 = fft2(ii)%======傅里叶变换
i2 =fftshift(i1) %======将变换的频率图像四角移动到中心(原来良的部分在四角 现在移动中心,便于后面的处理)
i3=log(abs(i2)) %=====显示中心低频部分,加对数是为了更好的显示
程序一
figure,imshow(i3,[])
colormap(lcmp)
imwrite(i3,lcmp,'f:\ffttank.bmp') %===将上面i3输入到ffttank文件中
i5 = real(ifft2(ifftshift(i2))) %===频域的图反变换到空域 并取实部
i6 = im2uint8(mat2gray(i5))%===取其灰度图
imwrite(i6,lcmp,'f:\tank2.bmp','bmp') %===利用灰度图和原来取得颜色模板 还原图像
figure,imshow(i6)
title('反变换后的图像')
程序二
RGB = imread('autumn.tif') %===读取图像
I = rgb2gray(RGB) %==将其转为灰度
imshow(I)
J = dct2(I) %==二维dct变换,即离散余弦变换,
figure,imshow(log(abs(J)),[]) %==显示出变换后的图像,此时能量集中在左上角
colormap(jet(64)), colorbar%====建立颜色模板
figure
J(abs(J) <10) = 0 %==我理解为:因为dct变换只要保存左上角的低频小块就可以保持原图像信息,故其他部分(高频,其能量较小故值也小)就可以舍去
K = idct2(J)/255 %===这不加255,将下句改成imshow(K,[])也一样,只是显示的需要
imshow(K)
title('反变换后的图像')
程序三我就不太懂了 %后面是我的解释 很久没碰了 有的可能会有些问题 希望可以帮到你
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)