中值十字形滤波 matlab,Opencv+python:中值滤波十字形窗口

本文介绍了如何在MATLAB和Python中使用OpenCV实现十字形中值滤波,特别适用于处理椒盐噪声。文章讨论了滤波原理,提供了灰度和RGB模式的代码实现,并展示了处理效果。尽管目前代码效率不高,但作者计划后续进行优化。
摘要由CSDN通过智能技术生成

前言

在进行图像空域处理时,对于椒盐噪声的图像,中值滤波是一个很不错的选择,一般来说mask有矩形 椭形 和十字形,

十字形被认为在处理含有少数尖锥基元的图像更能保证尖锥的形状,由于没找到Matlab自带的函数库实现十字窗口,并且论坛上有极少的Opencv基于python的代码,大多还是付费的,于是自己写了一个模板,能够实现基本原理,至于效果和处理速度,有时间以后会进行优化。

中值滤波

中值滤波的原理很简单,不考虑图像填充,将一个框架,框在图像像素,框架上的像素数值按升降序排列,取中位数作为原像素点的新值。矩形的窗口都有专门的函数轻松实现,十字窗口则是以像素点为中心点,向四周直线发散,形成十字样式。

至于python上的实现逻辑,我将它分成RGB模式和Gray模式。

先说灰度模式,比较简单,它是一个二维张量,只需要用模板进行排序,通过基础的循环进行mask滑动,并且重新赋值即可。

RGB模式比灰度模式多了一步,将RGB图像是三维张量,先将其拆分成3个二维张量,然后再按照灰度模式的方法进行赋值,最后再进行图像合并。

目前代码的计算复杂度较高,还没有进行优化,彩色图像处理会花费较长时间。

所需库及函数特点

OpenCV

numpy

1.不需要指定色彩模式,只要是RGB或者灰度图可以直接传入函数

2.支持自定义框架大小

3.支持常数边界填充,也可以稍微改动进行OpenCV支持的所有填充方式

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值