浮雕效果之傅里叶变换

浮雕效果之傅里叶变换

一、工作原理

先将图片矩阵化,对不同的通道分别进行二维傅里叶变换。二维离散傅里叶变换是将图像从空间域转换到频域的变换方法。图像实质上是二维的数表或矩阵。将空间域(二维灰度数表)的图像转换到频域(频率数表)能够更直观地观察和处理图像,也更有利于进行频域滤波等操作。二维离散傅里叶变换的公式如图。
在这里插入图片描述
式中 f(x,y) 代表一幅大小为 M x N 的矩阵,其中 x = 0,1,2,···,M-1 和 y = 0,1,2,···,N-1 ,F(u,v) 表示 f(x,y) 的傅里叶变换。可以转换为三角函数表示方法,其中 u 和 v 可用于确定正余弦的频率。 F(u,v) 所在坐标系被称为频域,由 u = 0,1,2,···,M-1 和 v = 0,1,2,···,N-1 定义的 M x N 矩阵常称为频域矩阵。f(x,y) 所在坐标系被称为空间域, 由 x = 0,1,2,···,M-1 和 y = 0,1,2,···,N-1 所定义的 M x N 矩阵常被称为空间域矩阵。显然频域矩阵的大小与原空间域矩阵大小相同。频域矩阵中每个点的都代表了一个频率为 u,v 的函数,这些函数在空间域的组合即为原函数 f(x,y)。

随后在时域上对x、y方向上进行差分后再叠加,最后让所得矩阵借助不同的灰度等级将其逐步调节即可展现为浮雕效果。

二、matlab源代码

function final_image=relief(image,no_channel)     %no_channel:灰度图为1, rgb图片为3
[h,w,~]=size(image);                              
fx=linspace(floor(-w/2)+1,floor(w/2),w);               
fx=fx/w*2*pi*1i;                                   
fy=linspace(floor(-h/2)+1,floor(h/2),h);
fy=fy'/h*2*pi*1i;                                
final_image=zeros(size(image));
for i=1:no_channel                
    s=double(image(:,:,i));
    f=fftshift(fft2(s));          
    df_y=f.*(1-exp(-fy));         
    df_x=(1-exp(-fx)).*f;         
    df=df_x+df_y;                 
    final_image(:,:,i)=real(ifft2(ifftshift(df)));
end
    final_image=uint8(final_image+128);
    imshow(rgb2gray(final_image))
end

三、成果展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值