早教吧 育儿知识 作业答案 考试题库 百科 知识分享

谁帮我解释数字图像处理的程序,刚学的,看不懂!程序一:[i,lcmp]=imread('f:\tank.bmp');imshow(i,lcmp);ii=im2double(i);i1 = fft2(ii);i2 =fftshift(i1);i3=log(abs(i2));figure,imshow(i3,[]);colormap(lcmp);imwrite(i3,lcmp,'f:\ffttank.bm

题目详情
谁帮我解释数字图像处理的程序,刚学的,看不懂!
程序一:
[i,lcmp]=imread('f:\tank.bmp');
imshow(i,lcmp);
ii=im2double(i);
i1 = fft2(ii);
i2 =fftshift(i1);
i3=log(abs(i2));
figure,imshow(i3,[]);
colormap(lcmp);
imwrite(i3,lcmp,'f:\ffttank.bmp');
i5 = real(ifft2(ifftshift(i2)));
i6 = im2uint8(mat2gray(i5));
imwrite(i6,lcmp,'f:\tank2.bmp','bmp');
figure,imshow(i6);
title('反变换后的图像');
程序二:
%对autumn.tif文件计算二维DCT变换
RGB = imread('autumn.tif');
I = rgb2gray(RGB);
imshow(I);
J = dct2(I);
figure,imshow(log(abs(J)),[])
colormap(jet(64)),colorbar
figure;
J(abs(J) < 10) = 0;
K = idct2(J)/255;
imshow(K);
title('反变换后的图像');
程序三:
load woman;
imshow(X,map);
nbcol = size(map,1);
[cA1,cH1,cV1,cD1] = dwt2(X,'db1');
cod_X = wcodemat(X,nbcol);
cod_cA1 = wcodemat(cA1,nbcol);
cod_cH1 = wcodemat(cH1,nbcol);
cod_cV1 = wcodemat(cV1,nbcol);
cod_cD1 = wcodemat(cD1,nbcol);
figure
subplot(221)
imshow(cod_cA1,map)
title('近似细节系数')
subplot(222)
imshow(cod_cH1,map)
title('水平细节系数')
subplot(223)
imshow(cod_cV1,map)
title('垂直细节系数')
subplot(224)
imshow(cod_cD1,map)
title('对角细节系数')
Y = idwt2(cA1,cH1,cV1,cD1,'db1',nbcol);
figure;
imshow(Y,map);
title('重构后的图像')
谢谢这个朋友的回答,还有程序三
▼优质解答
答案和解析
[i,lcmp]=imread('f:\tank.bmp');%显示中心低频部分,加对数是为了更好的显示
程序一
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('反变换后的图像');
程序三我就不太懂了 %后面是我的解释 很久没碰了 有的可能会有些问题