`
huangyongxing310
  • 浏览: 499091 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

opencv 平滑图像

 
阅读更多
opencv 平滑图像



模糊/平滑图片来消除图片噪声
OpenCV函数:cv2.blur(), cv2.GaussianBlur(), cv2.medianBlur(), cv2.bilateralFilter()


均值滤波(会模糊会边缘)
blur(src, ksize, dst=None, anchor=None, borderType=None)

ksize:卷积核大小




方框滤波
方框滤波跟均值滤波很像,如下面的公式。用cv2.boxFilter()函数实现,事实上,当可选参数normalize为True的时候,方框滤波就是均值滤波,如3×3的核,a就等于1/9;normalize为False的时候,a=1,相当于求区域内的像素和。

boxFilter(src, ddepth, ksize, dst=None, anchor=None, normalize=None, borderType=None):


高斯滤波
GaussianBlur(src, ksize, sigmaX, dst=None, sigmaY=None, borderType=None)

参数3 σx值越大,模糊效果越明显。


中值滤波
中值又叫中位数,是所有值排序后取中间的值。
所以那种孤立的斑点,如0或255很容易消除掉,适用于去除椒盐噪声和斑点噪声。
medianBlur(src, ksize, dst=None)




双边滤波
模糊操作基本都会损失掉图像细节信息,尤其前面介绍的线性滤波器,图像的边缘信息很难保留下来。然而,边缘edge信息是图像中很重要的一个特征,所以这才有了双边滤波。

双边滤波中双边的意思是同时考虑两条边(因素),这两条边分别是空间域和值域。这里的空间域是指考虑空间位置关系,根据距离核心位置的距离的远近给予不同的加权值,原理和高斯滤波一样。而值域是指考虑邻域范围内的像素差值计算出滤波器系数,类似于α-截尾均值滤波器(去掉百分率为α的最小值和最大之后剩下像素的均值作为滤波器)。

其中sigmaColor越大,就表明该像素邻域内有越宽广的颜色会被混合到一起,产生较大的相等颜色区域。sigmaSpace越大,则表明越远的像素会对kernel中心的像素产生影响,从而使更大的区域中足够相似的颜色获取相同的颜色。

bilateralFilter(src, d, sigmaColor, sigmaSpace, dst=None, borderType=None)

d:每个像素邻域的直径
sigmaColor:
sigmaSpace:


# -*-encoding:utf-8-*-
import pytesseract
from PIL import Image
from PIL import ImageFilter
from PIL import ImageFont
from PIL import ImageDraw
import numpy as np
from PIL import Image

import cv2


def main():
    # 颜色空间转换
    img = cv2.imread("learn.jpg")

    # =================================均值滤波(会模糊会边缘)
    # blur(src, ksize, dst=None, anchor=None, borderType=None)
    # ksize: 卷积核大小
    res = cv2.blur(img,(3, 3))

    # =================================方框滤波

    boxFilter = cv2.boxFilter(img, -1, (3, 3), normalize=True)
    res = cv2.boxFilter(img, -1, (3, 3), normalize=False)

    # =================================高斯滤波
    res = cv2.GaussianBlur(img, (5, 5), 1)  # 高斯滤波

    # 参数3 σx值越大,模糊效果越明显。

    # =================================中值滤波
    # 中值又叫中位数,是所有值排序后取中间的值。
    # medianBlur(src, ksize, dst=None)
    res = cv2.medianBlur(img, 5)  # 中值滤波

    # =================================双边滤波
    # 模糊操作基本都会损失掉图像细节信息,尤其前面介绍的线性滤波器,
    # 图像的边缘信息很难保留下来。然而,边缘edge信息是图像中很重要的一个特征,所以这才有了双边滤波。
    res= cv2.bilateralFilter(img, 9, 75, 75)  # 双边滤波

    # cv2.imshow('img', img)
    # cv2.imshow('boxFilter', boxFilter)
    cv2.imshow('res', res)
    cv2.waitKey(0)



if __name__ == '__main__':
    main()




分享到:
评论

相关推荐

    opencv 图像平滑处理

    4. **双边滤波**:双边滤波是一种更高级的平滑方法,它结合了空间和灰度相似度,既能平滑图像又能保持边缘细节。`cv::bilateralFilter()`函数可用于此目的,参数包括输入图像、输出图像、滤波器直径、σ_color(颜色...

    OpenCvSharp 图像校正.rar

    例如,可以使用高斯滤波器(`GaussianBlur()`)来平滑图像,或者用Sobel算子(`Sobel()`)进行边缘检测,提升图像的清晰度。此外,还可以使用中值滤波(`MedianBlur()`)去除椒盐噪声。 5. **模板匹配与特征匹配**...

    abc.zip_ABC_opencv平滑_图像处理 ABC

    标题中的"abc.zip_ABC_opencv平滑_图像处理 ABC"暗示了我们将在讨论OpenCV如何实现图像平滑处理,这通常是减小图像噪声、提高图像质量的第一步。在描述中提到,“opencv在VC++环境下图像平滑处理的四种常用方法”是...

    OpenCV数字图像处理

    - 滤波:`cv::GaussianBlur()`、`cv::medianBlur()`和`cv::blur()`可以用于平滑图像,减少噪声。 - 边缘检测:`cv::Canny()`和`cv::Sobel()`可以检测图像的边缘。 - 特征检测:`cv::goodFeaturesToTrack()`、`cv::...

    基于opencv的图像拼接程序

    5. **结果图像优化**:最后,可能需要对结果图像进行一些后处理,如去噪、平滑和色彩调整,以提高视觉质量。 在OpenCV中,`cv::detail::ImageStitcher`类是实现图像拼接的核心组件。它封装了整个流程,包括特征检测...

    基于opencv 的图像融合

    OpenCV库提供了多种预处理函数,如`cv::blur`进行平滑滤波,`cv::cvtColor`进行颜色空间转换,以及`cv::imread`和`cv::imwrite`用于读取和保存图像。 2. **特征提取**:在融合过程中,特征提取有助于识别每幅图像的...

    opencv 将图像平滑处理--灰阶转换--腐蚀--膨胀

    ### OpenCV中的图像预处理技术:平滑处理、灰阶转换及形态学操作 #### 一、概述 在计算机视觉领域,对图像进行预处理是非常重要的一步,它可以帮助我们更好地提取图像特征,从而提高后续算法的准确性和效率。...

    opencv数字图像去除噪声

    双边滤波器结合了空间和强度信息,既能平滑图像,又能保留边缘,对于保留图像细节特别有效。 5. **自适应局部阈值去噪(Adaptive Thresholding)** 根据图像局部区域的特性进行阈值处理,可以针对不同区域的噪声...

    C++ - opencv - 图像增强 - 文本图像增强

    - **滤波操作**:包括高斯滤波、中值滤波和双边滤波,可用于平滑图像、去除噪声,同时保持文字边缘的清晰。 - **锐化**:使用拉普拉斯算子或Unsharp Masking技术,可以增强图像的边缘,使文字更清晰。 - **二值化...

    数字图像处理_opencv_图像处理_

    滤波是去除图像噪声、平滑图像的一种方法,OpenCV提供了多种滤波器,如平均滤波(`cv2.blur()`)、高斯滤波(`cv2.GaussianBlur()`)和中值滤波(`cv2.medianBlur()`)。这些操作可以提高图像质量,为后续的边缘检测...

    基于OPENCV的数字图像处理

    OpenCV中的滤波函数(如高斯滤波、中值滤波)可以用于平滑图像,减少噪声;图像增强能改善图像对比度;去噪方法如快速傅里叶变换(FFT)和非局部均值去噪可去除图像中的噪声。 3. **直方图**:直方图是图像亮度或颜色...

    QT+opencv图像增强,包括高斯平滑,中值滤波,图像锐化

    在计算机视觉领域,图像处理是不可或缺的一环,而QT与OpenCV这两个强大的工具结合,能够实现各种复杂的图像处理任务。本项目重点在于图像增强,主要包括高斯平滑、中值滤波以及图像锐化,这些都是图像预处理的重要...

    平滑处理.cpp.zip_OpenCV 平滑_opencv 图像处理

    使用C语言,调用OpenCV的库,来对图像进行平滑处理。

    基于opencv 的图像局部放大

    本项目聚焦于“基于OpenCV的图像局部放大”功能的实现,这在很多应用场景中都非常有用,如图像分析、图像处理或者图像浏览软件等。下面我们将详细探讨如何使用VC++(Visual C++)集成开发环境和OpenCV库来实现这一...

    基于opencv的图像识别,识别图像中的色块

    此外,理解OpenCV的图像处理概念非常重要,如滤波器(例如高斯滤波)可以用来平滑图像,减少噪声;膨胀和腐蚀操作可以帮助填充孔洞和分离粘连的色块。这些都是在实际应用中可能需要掌握的额外技能。 总的来说,基于...

    基于OpenCV的图像轮廓提取实现

    接下来,可以应用高斯滤波来平滑图像,消除噪声,为后续的边缘检测做准备。 在滤波后的图像上,我们可以使用Canny边缘检测算法来找出潜在的边缘。Canny算法通过计算梯度强度和方向来确定边缘。在OpenCV中,`Canny()...

    cuda结合opencv实现图像的高斯平滑

    应用CUDA,opencv实现图像的高斯平滑处理, 读取待处理的图像; 定义中间数据传递的指针并分配内存; 将数据从Host端传到Device端; 网格和块的分配; 执行kernel函数; 将数据从Device端传回到Host端; 最后...

    2基于OpenCV的图像平滑.rar

    在图像处理领域,OpenCV(开源计算机视觉库)是一个广泛使用的工具,它提供了丰富的功能,包括图像平滑处理。图像平滑,也被称为图像滤波,是减少图像噪声、提高图像质量的重要步骤。本项目主要关注如何使用C语言...

    opencv2D图像资源

    4. **图像滤波**:包括均值滤波、高斯滤波、中值滤波等,可用于平滑图像或去除噪声。`blur()`、`GaussianBlur()`和`medianBlur()`是对应的函数。 5. **边缘检测**:Canny、Sobel、Laplacian等算法可以帮助找到图像...

    opencv2.0.0图像处理

    4. 图像滤波:OpenCV提供了多种滤波器,如高斯滤波、中值滤波、 Sobel算子等,可用于图像平滑、边缘检测等。这些滤波器在消除噪声、增强特征或检测边缘时非常有效。 5. 图像分割:OpenCV中的`threshold()`函数可以...

Global site tag (gtag.js) - Google Analytics