首页 > 其他分享 >OpenCV 模糊操作

OpenCV 模糊操作

时间:2024-08-18 10:58:22浏览次数:14  
标签:卷积 模糊 滤波 OpenCV blur 操作 cv 模板

模糊操作
三种模糊操作方式
均值模糊
中值模糊
自定义模糊(可以实现上面两种模糊方式)
原理:
图像处理:基础(模板、卷积运算)
图像处理-模板、卷积的整理
基于离散卷积
定义好每个卷积核
不同卷积核得到不同的卷积效果
模糊是卷积的一种表象

在这里插入图片描述

一:均值模糊blur
def blur_demo(image): #均值模糊
dst = cv.blur(image,(5,5)) #ksize是卷积核大小1行3列,列数越大模糊越大
cv.imshow(“blur_demo”,dst)
opencv有一个专门的平均滤波模板供使用–归一化卷积模板,所有的滤波模板都是使卷积框覆盖区域所有像素点与模板相乘后得到的值作为中心像素的值。
Opencv中均值模板可以用cv2.blur和cv2.boxFilter,比如一个3*3的模板其实就可以如下表示:
在这里插入图片描述

模板大小是m*n是可以设置的。如果你不想要前面的1/9,可以使用非归一化的模板cv2.boxFilter。
在这里插入图片描述

二:中值模糊mediaBlur
中值滤波模板就是用卷积框中像素的中值代替中心值,达到去噪声的目的。
这个模板一般用于去除椒盐噪声。
前面的滤波器都是用计算得到的一个新值来取代中心像素的值,而中值滤波是用中心像素周围(也可以使他本身)的值来取代他,卷积核的大小也是个奇数。

def median_blur_demo(image):   #中值模糊,对于椒盐噪声的去噪效果好,去掉图片中的一些黑点等
    gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
    for i in range(2000):  # 添加点噪声,白色
        temp_x = np.random.randint(0, gray.shape[0])
        temp_y = np.random.randint(0, gray.shape[1])
        gray[temp_x][temp_y] = 255

    cv.imshow("median_blur_gray", gray)
    dst = cv.medianBlur(gray,5)  #ksize是卷积核大小1行3列,列数越大模糊越大
    cv.imshow("median_blur_demo",dst)

在这里插入图片描述

可以看到中值滤波对于这些白点噪声的去除是非常的好的。
三:自定义模糊filter2D(上面是封装在2D滤波器之上)
图像滤波函数imfilter函数的应用及其扩展
Opencv提供的一个通用的2D滤波函数为cv2.filter2D(),
滤波函数的使用需要一个核模板,对图像的滤波操作过程为:将和模板放在图像的一个像素A上,求与之对应的图像上的每个像素点的和,
核不同,得到的结果不同,而滤波的使用核心也是对于这个核模板的使用,需要注意的是,该滤波函数是单通道运算的,
也就是说对于彩色图像的滤波,需要将彩色图像的各个通道提取出来,对各个通道分别滤波才行。
(1)实现中值模糊
def custom_blur_demo(image): #自定义模糊
kernel = np.ones([5,5],np.float32)/25 #声明二维数组55,初始化1,保证值不溢出,除以数组大小,实现中值模糊 自定义卷积核的算子
dst = cv.filter2D(image,-1,kernel)
cv.imshow(“custom_blur_demo”,dst)
上述生成的5
5核模板其实就是一个均值滤波。,当我们是/25就是中值滤波,归一化处理
在这里插入图片描述

(2)实现锐化处理
def custom_blur_demo(image): #自定义模糊
kernel = np.array([[0,-1,0],[-1,5,-1],[0,-1,0]],np.float32) #实现锐化处理,提高图像的对比度,提高立体感,轮廓更加清晰
dst = cv.filter2D(image,-1,kernel)
cv.imshow(“custom_blur_demo”,dst)
在这里插入图片描述

标签:卷积,模糊,滤波,OpenCV,blur,操作,cv,模板
From: https://blog.csdn.net/m0_37302966/article/details/141295087

相关文章

  • OpenCV 图像直方图
    一:直方图的直接使用frommatplotlibimportpyplotaspltdefplot_demo(image):print(image.ravel())plt.hist(image.ravel(),256,[0,256])#ravel将图像3维转一维数组,便于统计频率#统计为256个bin,显示0-256bin,意思是全部显示,我们可以设置只显示一部分plt.show()......
  • OpenCV 边缘保留滤波EPF
    OpenCV经典的两种实现EPF方法:高斯双边和均值迁移一:双边模糊差异越大,越会完整保留defbi_demo(image):dst=cv.bilateralFilter(image,0,100,15)#第二个参数d是distinct,我们若是输入了d,会根据其去算第3或4个参数,我们最好是使用第3或4个参数反算d,先设为0cv......
  • 操作系统-内存、文件管理
    一、内存管理的层次关系用户层STL自动分配、自动释放调用C++C++new/delete、构造/析构调用CCmalloc\calloc\realloc\free调用POSIX\LinuxPOSIXsbrk\brk调用KernalLinuxmmap\munmap调用Kernal系统层Kernalkmalloc\vmalloc调用驱......
  • 一个简单的Rtmp推流客户端(QT录音,OpenCV摄像,FFmpeg编码推流)
            RTMP(Real-TimeMessagingProtocol)是一种实时流媒体传输协议,常用于音视频直播。        RTMP推流客户端是一种能够将音视频数据推送到直播服务器的工具。QT录音是利用Qt库实现的录音功能。OpenCV摄像是利用OpenCV库实现的对摄像头的控制和图像处理功......
  • 定时任务操作
    一、定时任务的作用时间同步,每隔5min自动同步一次数据备份,服务配置文件,系统配置文件,数据文件,日志文件辅助软件正常运行+脚本二、定时任务的分类1、定时任务文件不同1.1、系统定时任务/etc/crontab1.2、用户定时任务,root是配置文件/var/spool/cron/root2、配置方式......
  • Linux基本指令:掌握日常操作的必备技能
    ......
  • 【OpenCV教程】对图像的各种常用操作
    @目录1.图片读取2.创建窗口3.图片显示4.图片保存5.视频输入输出5.1filename5.2index5.3fourcc5.4apiPreference(notimportant)5.5演示6.通道分离与合并6.1分离API(一)API(二)6.2合并API(一)API(二)7.图片色彩模式转换7.1API7.2转换类型和转换码8.改变图片的对比度和亮度8.1概述8......
  • Linux系统中firewalld防火墙常用的操作命令
    本章将和大家分享Linux系统中firewalld防火墙常用的操作命令。废话不多说,下面我们直接进入主题。一、安装Firewall命令yuminstallfirewalldfirewalld-config二、防火墙的基本操作1、查看防火墙状态使用systemctlstatusfirewalld命令可以查看firewalld服务的状态。也......
  • 《心灵杀手》安装时renderer_w32_f.dll丢失:从原因分析到实际操作,全方位解决《心灵杀手
    《心灵杀手》(AlanWake)是一款备受好评的动作冒险游戏,但有时玩家在安装过程中会遇到“renderer_w32_f.dll丢失”的错误提示。这个问题通常意味着游戏启动时未能找到所需的动态链接库(DynamicLinkLibrary,DLL)文件,从而阻止了游戏的正常安装或运行。本文将探讨这一问题的常见原因......
  • 2024-08-17:用go语言,给定一个从0开始的整数数组nums和一个整数k, 每次操作可以删除数组
    2024-08-17:用go语言,给定一个从0开始的整数数组nums和一个整数k,每次操作可以删除数组中的最小元素。你的目标是通过这些操作,使得数组中的所有元素都大于或等于k。请计算出实现这个目标所需的最少操作次数。输入:nums=[2,11,10,1,3],k=10。输出:3。解释:第一次操作后,nums变......