学术堂首页 | 文献求助论文范文 | 论文题目 | 参考文献 | 开题报告 | 论文格式 | 摘要提纲 | 论文致谢 | 论文查重 | 论文答辩 | 论文发表 | 期刊杂志 | 论文写作 | 论文PPT
学术堂专业论文学习平台您当前的位置:学术堂 > 计算机论文 > 数字图像处理论文

Python语言在数字图像处理课程的应用研究(2)

来源:学术堂 作者:原来是喵
发布于:2016-10-25 共4117字
  3频率域滤波
  
  频率域滤波与空间滤波是对图像增强一个问题的两种殊途同归的方式[8].在分析图像信号的频率特性时,对于一幅图像,直流分量表示预想的平均灰度,低频分量代表了大面积背景区域和缓慢变化部分,高频部分代表了它的边缘、细节、跳跃部分以及颗粒噪声。截取频率的低频分量,对其作傅立叶反变换,得到的就是模糊后的图像; 截取频率的高频分量,对其作傅立叶反变换,得到的就是锐化后的图像[9].opencv包中DFT(Discrete Fourier Transform) 和IDFT(inverse DFT) 算法用于傅立叶变换。本次研究中同时利用了numpy包中fft.fftshift傅立叶变换函数[10],Python代码如下,其结果如图3.
  
  频谱图(左)、高通移去低频DFT图像(中)、低通移去高频IDTF图像(右)
  
  img = cv2.imread(‘myson.jpg',0)
  
  rows,cols = img.shapecrow,ccol = rows / 2,cols / 2 #取中心#
  
  mask1 = np.zeros( (rows,cols,2) ,np.uint8)#建立一个遮罩中心都是1,边缘都是0#
  
  mask1[crow-30:crow+30,ccol-30:ccol+30]= 1
  
  mask2 = np.ones( (rows,cols,2) ,np.uint8)#建立一个遮罩中心都是0,边缘都是1#
  
  mask2[crow-30:crow+30,ccol-30:ccol+30]= 0
  
  dft = cv2.dft(np.float32(img) ,flags = cv2.DFT_COMPLEX_OUTPUT)# #傅立叶变换,输入图像转成np.float32型频谱#
  
  dft_shift = np.fft.fftshift(dft)#反换位,低频部分移到四周,高频部分移到中间#
  
  magnitude_spectrum = 20* np.log(cv2.magnitude(dft_shift[: ,: ,0],dft_shift[: ,: ,1]) )
  
  fshift1 = dft_shift* mask1 #对遮罩和频谱进行IDFT#
  
  fshift2 = dft_shift* mask2
  
  f_ishift1 = np.fft.ifftshift(fshift1)#做数据反转#
  
  f_ishift2 = np.fft.ifftshift(fshift2)
  
  img_back1 = cv2.idft(f_ishift1)
  
  img_back1 = cv2.magnitude(img_back1[: ,: ,0],img_back1[: ,: ,1])#将频谱转换为可视图像#
  
  img_back2 = cv2.idft(f_ishift2)
  
  img_back2 = cv2.magnitude(img_back2[: ,: ,0],img_back2[: ,: ,1])
  
  4边缘检测
  
  边缘检测是图像处理和计算机视觉中的基本问题,目的是标识数字图像中亮度变化明显的点,解决图像分割的问题[11].常见的算法包括: 差分边缘检测、梯度边缘检测、ROBERT边缘检测[12]. opencv包中有Canny算法、Sobel算法、Laplace算法,Scharr滤波器以及Hough直线检测可以完成相应的边缘检测。本次实验中笔者利用sobel和Canny边缘两种方法,并借助高斯模糊解决图像边缘检测问题[13].代码如下,其结果如图4.
  
  sobel(左)和Canny(右)边缘结果图
  
  img = cv2.imread(“ myson.jpg”,0)
  
  img = cv2.Gaussian Blur(img,(3,3) ,0)#用高斯平滑处理原图像降噪#
  
  x = cv2.Sobel(img,cv2.CV_16S,1,0)#X轴sobel边缘检测#
  
  y = cv2.Sobel(img,cv2.CV_16S,0,1)#y轴sobel边缘检测#
  
  abs X = cv2.convert Scale Abs(x)#转回uint8,否则将无法显示图像#
  
  abs Y = cv2.convert Scale Abs(y)
  
  dst = cv2.add Weighted(abs X,0.5,abs Y,0.5,0)#sobel边缘检测#
  
  canny = cv2.Canny(img,50,150)#Canny边缘检测#
  
相关标签:
  • 报警平台
  • 网络监察
  • 备案信息
  • 举报中心
  • 传播文明
  • 诚信网站