谁帮我解释数字图像处理的程序,刚学的,看不懂!

谁帮我解释数字图像处理的程序,刚学的,看不懂!,第1张

[i,lcmp]=imread('f:\tankbmp');%=======读取图像 显示图像

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:\ffttankbmp'); %===将上面i3输入到ffttank文件中

i5 = real(ifft2(ifftshift(i2))); %===频域的图反变换到空域 并取实部

i6 = im2uint8(mat2gray(i5)); %===取其灰度

imwrite(i6,lcmp,'f:\tank2bmp','bmp'); %===利用灰度图和原来取得颜色模板 还原图像

figure,imshow(i6);

title('反变换后的图像');

程序二

RGB = imread('autumntif'); %===读取图像

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('反变换后的图像');

程序三我就不太懂了 %后面是我的解释 很久没碰了 有的可能会有些问题 希望可以帮到你

你打开#include<opencv/highguih>里面包含:

#include "opencv2/core/core_ch"

#include "opencv2/highgui/highgui_ch"

拿imshow举例,里面只声明了cvShowImage这个函数,没有声明imshow所以会显示未定义标识符。

把#include<opencv/highguih>换成 #include <opencv2/highgui/highguihpp>就好了

以上就是关于谁帮我解释数字图像处理的程序,刚学的,看不懂!全部的内容,包括:谁帮我解释数字图像处理的程序,刚学的,看不懂!、vs2012中包括进去opencv,imread,namedWindow,imshow使用这几个函数,显示未定义标示符、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9736941.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存