对一幅图像傅里叶变换后,显示其频谱图的MATLAB语句?
对一幅图像进行傅里叶变换后,显示其频谱图为什么有时候用imshow(abs(F))有时候用imshow(log(abs(F)))?有什么区别和联系呢?(F为图像的傅里叶变...
对一幅图像进行傅里叶变换后,显示其频谱图为什么有时候用imshow(abs(F))有时候用imshow(log(abs(F)))?有什么区别和联系呢?(F为图像的傅里叶变换)
展开
3个回答
展开全部
很简单。因为进行了傅氏变换以后图像上每点的值都成了复数,取abs(即取模值)后才能显示为图像。但是问题是进行变换再取模值后数字有时会变得非常大,拿常用的数据类型uint8(即8位无符号整型数)为例,所能表示的范围仅为0~255,如果数据超过255,在显示图像时系统自动把数据变成255,所以如果有很多数据都超过255,即使这些数据之间差别也蛮大,傅立叶变换显示的图像只会白茫茫一片(255代表白色),看不出差异来。所以需要对这些数据进行处理,常用的就是取对数(log),将很大的数据变成小一些的数据,落在0~255之间,能够准确地表示在图像上,更直观地发现数据之间的差异,也是进行傅氏变换的意义所在,区分高频分量和低频分量。
追问
恩恩,明白了。那是不是说,所得到频谱图看上去是由无数的黑白点组成,其实那不是单纯的黑与白,而是0~255的不同灰度值对吧?还有,你知不知道如何得到一幅彩色图像的频率范围?因为我想对一幅图像进行滤波,可是不知道图像的频率分布,无法确定滤波器截止频率,谢谢~
追答
数字图像就是一个个点组成的呀,就是我们常说的像素,在计算机里就是用数值表示的,所以你说的是对的。
至于彩色图像比较复杂,首先拿到一幅彩色图像先要判断是真彩色还是伪彩色图像(具体的内容太多了,你可以自己在网上了解,推荐冈萨雷斯的《数字图像处理》,比较权威)。如果是真彩色图像,就把RGB三个分量(即三个二维矩阵)分别做处理,也就是像处理3个灰度图像一样,最后再叠加。如果是伪彩色图像,我也不太清楚了,很复杂。
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐于2018-12-13
展开全部
f = imread('tire.tif');
imshow(f)
F = fft2(f); % 傅氏变换
Fc = fftshift(F); % 中心化
Fm = abs(Fc); % 取模
figure, imshow(Fm, [ ])
figure, imshow(log(1+Fm), [ ]) % 对数变换,增强显示视觉效果
G = ifftshift(Fc); % 对Fc去中心化
g = ifft2(G); % 对G逆变换
figure, imshow(g) % 原图像
你要注意整个流程,f ---> F ----> Fc , 所以要回去的话当然是Fc --- > G --- > g,就是先对Fc去中心化得到G,再对G逆变换得到g,这样才行。
imshow(f)
F = fft2(f); % 傅氏变换
Fc = fftshift(F); % 中心化
Fm = abs(Fc); % 取模
figure, imshow(Fm, [ ])
figure, imshow(log(1+Fm), [ ]) % 对数变换,增强显示视觉效果
G = ifftshift(Fc); % 对Fc去中心化
g = ifft2(G); % 对G逆变换
figure, imshow(g) % 原图像
你要注意整个流程,f ---> F ----> Fc , 所以要回去的话当然是Fc --- > G --- > g,就是先对Fc去中心化得到G,再对G逆变换得到g,这样才行。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你好,请问解决了如何获得图像的频率分布图了吗,最近也在做滤波,想知道具体怎么做呀
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询