网站建设动态实训报告,电子商务网站建设与管理课后题答案6,wordpress内容溢出,wordpress主题安装路径在本章节中#xff0c;将介绍几种常用的图像变换的方法#xff0c;即利用数学公式将图像变换成另一种具有特定物理意义的图像#xff0c;通过新的图像#xff0c;我们可以观察出原图像的某些特性#xff0c;且可以对原图像进行滤波、压缩等图像处理的操作#xff0c;包括…在本章节中将介绍几种常用的图像变换的方法即利用数学公式将图像变换成另一种具有特定物理意义的图像通过新的图像我们可以观察出原图像的某些特性且可以对原图像进行滤波、压缩等图像处理的操作包括傅里叶变换、沃尔什变换等。
一、图像傅里叶变换基本原理与实现
傅里叶变换是将时域信号转换为频域信号的变换方法将时域信号分解为频率不同的正弦波信号的方法也就是说任何一个信号都是若干个正弦信号所叠加。通过傅里叶变换我们就可以得到信号的频率特性是高频成分多一点还是低频成分多一点每个成分的幅值和相位是多少频谱图和相位图。 图像是离散的二维信号可以通过二维傅里叶变换实现到频域的转换转换前的图像矩阵是由实数组成的转换后的频域矩阵是复数阵变换公式如下所示x,yx,yx,y是图像阵的坐标u,vu,vu,v是频域阵的坐标两者没有一一对应的关系频域阵中每一个点都是对图像阵中每一个像素点进行了运算的。 我们关注的是通过傅里叶变换获得图像的频谱图与相位图计算方法如下 接下来我们用python代码来实现傅里叶变换得到图像的频谱图与相位图实验图像是Lena。 计算频谱图的代码如下
import cv2
import numpy as np
import matplotlib.pyplot as plt
import pylab
img cv2.imread(Lena.jpg,0)
f np.fft.fft2(img) #傅里叶变换
fshift np.fft.fftshift(f) #将零频点移到图像中央
s1 np.log(np.abs(f)) #先进行绝对值运算然后取对数限制数值范围
s2 np.log(np.abs(fshift))
plt.subplot(121),plt.imshow(s1,gray),plt.title(original)
plt.subplot(122),plt.imshow(s2,gray),plt.title(center)
pylab.show()得到结果第一幅图是原始傅里叶变换的结果我们可以这样理解这幅图片中心是高频部分四周是低频部分横轴是原图片横向方向的傅里叶频谱纵向是原图片纵向方向的傅里叶频谱为是频谱具有一致性与可观性我们将零频点也就是四个角上的点移到频谱图的中心得到第二幅图得到的频谱图中心是低频部分四周是高频部分。图中高亮的点代表成分多的某一频率灰暗的点代表成分少的某一频率。如果一幅图片高频部分多是高亮代表图像尖锐变化剧烈边界分明且两边像素差距极大反之图片低频部分高亮高频部分灰暗代表图片平缓、柔和。 观察实验图像的频谱结果中心点高亮低频部分占据成分大图片总体表现的平缓。 接下来我们来实现相位的部分实现代码如下
import cv2
import numpy as np
import matplotlib.pyplot as plt
import pylab
img cv2.imread(Lena.jpg,0)
f np.fft.fft2(img)
fshift np.fft.fftshift(f)
xw np.angle(f); #np.angle()函数求相位arctan虚部/实部
xw_shift np.angle(fshift)
plt.subplot(121),plt.imshow(xw,gray),plt.title(original)
plt.subplot(122),plt.imshow(xw_shift,gray),plt.title(center)
pylab.show()得到结果图中的点代表频谱图中对应频率的相位值。 二、图像傅里叶变换的应用
1、傅里叶变换在图像滤波中的应用 经过傅里叶变换后的图像中间部分为低频部分越靠外频率越高因此我们可以选择所需要的高频或是低频进行滤波。高频反映图像中的细节低频反映图像中的整体概貌。 低通滤波代码如下
import cv2
import numpy as np
import matplotlib.pyplot as plt
import pylabdef LPF(img,radius 50): #定义低通滤波函数radius低通半径半径越小低通效果越明显图片越模糊rows,cols img.shapemrows int(rows/2)mcols int(cols/2)mask np.zeros((rows,cols),np.uint8) #创建掩码mask[mrows-radius:mrowsradius,mcols-radius:mcolsradius] 1return mask def main():img cv2.imread(Lena.jpg,0)f np.fft.fft2(img)fshift np.fft.fftshift(f) fshift fshift*LPF(img) #低通滤波即与掩码相乘过滤掉频率高的部分#逆变换f_ishift np.fft.ifftshift(fshift)img_back np.fft.ifft2(f_ishift)img_back np.abs(img_back)plt.imshow(img_back,gray),plt.title(radius50)pylab.show()if __name____main__:main()结果如下 高通滤波代码如下
import cv2
import numpy as np
import matplotlib.pyplot as plt
import pylabdef HPF(img,radius 50): #高通滤波函数radius高通半径半径越大高通效果越明显图片越尖锐rows,cols img.shapemrows int(rows/2)mcols int(cols/2)mask np.zeros((rows,cols),np.uint8) #创建掩码mask[:,:] 1mask[mrows-radius:mrowsradius,mcols-radius:mcolsradius] 0return mask def main():img cv2.imread(Lena.jpg,0)f np.fft.fft2(img)fshift np.fft.fftshift(f) fshift fshift*HPF(img,1) #高通滤波即与掩码相乘过滤掉频率高的部分#逆变换f_ishift np.fft.ifftshift(fshift) img_back np.fft.ifft2(f_ishift)img_back np.abs(img_back)plt.imshow(img_back,gray),plt.title(radius50)pylab.show()if __name____main__:main()结果如下 对比结果可以发现低通滤波让图片变得更加模糊过滤掉了图片中边缘的、尖锐的部分高通滤波让图片变得更加尖锐过滤掉了图片中平缓的部分留下边缘的、尖锐的部分。
2、傅里叶变换在图像压缩中的应用 原理很简单将高频系数设置为0压缩效果如下 未完待续