美文网首页
卷积滤波和边缘检测

卷积滤波和边缘检测

作者: 南衍儿 | 来源:发表于2019-04-18 04:33 被阅读0次

图片的频率

首先说说图像频率的物理意义。图像可以看做是一个定义为二维平面上的信号,该信号的幅值对应于像素的灰度(对于彩色图像则是RGB三个分量),如果我们仅仅考虑图像上某一行像素,则可以将之视为一个定义在一维空间上信号,这个信号在形式上与传统的信号处理领域的时变信号是相似的。不过是一个是定义在空间域上的,而另一个是定义在时间域上的。所以图像的频率又称为空间频率,它反映了图像的像素灰度在空间中变化的情况。例如,一面墙壁的图像,由于灰度值分布平坦,其低频成分就较强,而高频成分较弱;而对于国际象棋棋盘或者沟壑纵横的卫星图片这类具有快速空间变化的图像来说,其高频成分会相对较强,低频则较弱(注意,是相对而言)。


基础知识

在数学中,傅里叶级数(Fourier series, /ˈfɔərieɪ/)是把类似波的函数表示成简单正弦波的方式。更正式地说,它能将任何周期函数或周期信号分解成一个(可能由无穷个元素组成的)简单振荡函数的集合,即正弦函数和余弦函数(或者,等价地使用复指数)。离散时间傅里叶变换是一个周期函数,通常用定义傅里叶级数的项进行定义。另一个应用的例子是Z变换,将傅里叶级数简化为特殊情形 |z|=1。傅里叶级数也是采样定理原始证明的核心。傅里叶级数的研究是傅里叶分析的一个分支。


I = imread('rice.png');
 figure;
 subplot(1, 2, 1);
 imshow(I);
 title('原图');
f = fft2(I);
 f = fftshift(log(1+abs(f)));
 subplot(1, 2, 2);
 imshow(f, []);
 title('频谱图');
频谱图

第一张图展示了频谱

  1. fft2() 函数得到的傅里叶变换是低频在四周的。为了获得更好的直观的感受,人们经常用fftshift() 调整结果以使得低频在中央。
  2. 频谱是复数,为了用二维图像展示频谱,就取了绝对值;
  3. 由于频谱的动态范围太大,而显示器的动态范围有限,所以用log变换降低频谱的动态范围。
  4. MATLAB的imshow函数,第二个输入变量是"[]"的时候,imshow会自动拉伸动态范围使得图像对比度提升。

看频谱一般看:

  1. 幅度谱。即第一张图的右图,观察图像的频率分布,哪里亮哪里暗。
  2. 相位谱。用得不多,一般在需要对比的时候会用到。

低通滤波

在图像边缘检测前的一步,用于过滤高频噪声,使得图像平滑。

  • 全均值滤波器:卷积核上的值和为1
全均值滤波器
  • 高斯模糊:既能模糊图像,又能保留边界。本质是使用一个带权的矩阵,中心点权重最大
高斯模糊

\frac{1}{16} \times \lgroup \begin{matrix} 1 & 2 & 1\\ 2 & 4 & 2 \\ 1 & 2& 1 \end{matrix} \rgroup

在openCV中实现了高斯模糊的算法,如在python中

gray_blur = cv2.Gaussian(gray,(5,5),0)

高通滤波

用于边缘检测

边缘检测对图片对每个像素进行卷积,得到边缘。


边缘检测

  • sobel算子

图像可以看作是取值在[0,255]的一个矩阵。
在连续函数中,我们使用导数来衡量自变量变化快慢。
而图像这种离散的量,我们使用差分来定义这种微分关系。#见博客

  • canny边缘检测器:
  1. 首先使用高斯模糊来过滤噪声
  2. 使用sobel过滤器来确定边缘的强度和方向
  3. 使用非极大抑制来检测边缘的强度和方向选出局部最大像素从而把最强的边缘绘制成连续的,一个像素宽的细线
  4. 最后使用滞后阀值来分离最佳边缘,滞后阀值是双阀值化操作

双阀值化

双阀值化
cv2.HoughLinesP(image, rho, theta, threshold[, lines[, minLineLength[, maxLineGap]]]) → lines
  • image:输入一个8bit的灰度图像
  • lines:返回一个线的集合
  • rho:double类型的rho,以像素为单位的距离精度。 另一种形容方式是直线搜索时的进步尺寸的单位半径。//即两条直线判断是一条所允许的误差像素
  • theta:double类型的theta,以弧度为单位的角度精度。另一种形容方式是直线搜索时的进步尺寸的单位角度。
  • threshold:累加平面的阈值参数,即识别某部分为图中的一条直线时它在累加平面中必须达到的值。 大于阈值 threshold 的线段才可以被检测通过并返回到结果中。
  • minLineLength:有默认值0,表示最低线段的长度,比这个设定参数短的线段就不能被显现出来。
  • maxLineGap:有默认值0,允许将同一行点与点之间连接起来的最大的距离。

物体识别

  • Haar Cascades(Haar级联)

相关文章

  • 卷积滤波和边缘检测

    图片的频率 首先说说图像频率的物理意义。图像可以看做是一个定义为二维平面上的信号,该信号的幅值对应于像素的灰度(对...

  • 08边缘检测1

    边缘检测实则为图片的卷积运算canny边缘检测:第一步:转换为灰度图第二步:高斯滤波第三步:调用canny方法

  • 2018-02-26周一~图像处理 滤波

    滤波,就是卷积,还可以等于频率函数相乘 滤波,分空间滤波和频域滤波 空间滤波,就是卷积 频域滤波,...

  • 卷积滤波器与边缘检测

    频率:对于声音,频率实际上是指声波振荡的速度 高低频率高频图像是强度变化很大的图像。并且亮度级别从一个像素到下一个...

  • Canny边缘检测

    边缘检测一般步骤 使用高斯滤波 在x和y方向上使用Sobel滤波器,在此之上求出边缘的强度和边缘的梯度 对梯度幅值...

  • 图像的卷积

    1.卷积的定义图像卷积是对图像进行处理的最常用方法,如:去噪、滤波、边缘提取等。对图像做卷积操作其实就是利用卷积核...

  • python 3+opencv 3.4(四)--处理图像

    一. 高通滤波器: 检测图像的某个区域,然后根据像素和周围像素亮度差值来提升该像素亮度的滤波器--适用于边缘检测。...

  • 吴恩达深度学习笔记(72)-卷积网络的边缘检测

    边缘检测 卷积运算是卷积神经网络最基本的组成部分,使用边缘检测作为入门样例。在这个笔记中,你会看到卷积是如何进行运...

  • 【Unity Shader入门精要学习】高级(二)

    屏幕后处理效果 边缘检测 边缘检测的原理是利用一些边缘检测算子对图像进行卷积(convolution)操作 一、卷...

  • Shader判断模型边界

    边缘检测的原理就是利用一些边缘检测算子对图像进行卷积操作。卷积操作就是使用一个卷积核对一张图像中的每个像素进行一系...

网友评论

      本文标题:卷积滤波和边缘检测

      本文链接:https://www.haomeiwen.com/subject/rcpawqtx.html