码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • opencv最大值滤波(不局限于图像)


            opencv中有较多滤波函数,如中值滤波等,但没有最大值和最小值滤波。本文将介绍用python numpy实现最大值滤波功能,可以说是不需要借助opencv即可实现。

    1 定义函数maxBlur

            定义最大值滤波的函数为maxBlur,包含3个参数,分别如下所示:

            (1)image:输入图像,array类型。

            (2)kernel:最大值范围,tuple类型,第一个元素表示x方向取最大值的范围,第二个元素表示y方向取最大值的范围。

            (3)limit:需要最大值滤波的元素,tuple类型,如(a,b)表示像素值范围在[a, b]的像素才进行最大值滤波。

            该函数做到了以下几个兼容性:

            (1)适合灰度图片或者RGB图片。

            (2)不局限于图像的数组,array。

            (3)适合任意数量的通道数。

    2 参考程序

    1. # -*- coding: utf-8 -*-
    2. """
    3. 乐乐感知学堂公众号
    4. @author: https://blog.csdn.net/suiyingy
    5. """
    6. import numpy as np
    7. def maxBlur(image, kernel=(3, 3), limit=(0, 255)):
    8. """
    9. Parameters
    10. ----------
    11. image : array, 输入矩阵或数组.
    12. kernel : tuple or list, optional
    13. 分别为x、y方向上的最大值取值区间范围. The default is (3, 3).
    14. limit : tuple or list, optional
    15. 指定进行最大值滤波的像素范围. The default is (0, 255).
    16. Returns
    17. -------
    18. image_c : array,处理后矩阵或数组。
    19. """
    20. image_c = image.copy()
    21. if len(image_c.shape) == 2:
    22. image_c = image_c[:, :, np.newaxis]
    23. h, w, c = image_c.shape
    24. image_c1 = image_c.copy()
    25. for i in range(h):
    26. for j in range(w):
    27. x1 = max(j-kernel[0]//2, 0)
    28. x2 = min(x1 + kernel[0], w)
    29. y1 = max(i-kernel[1]//2, 0)
    30. y2 = min(y1 + kernel[1], h)
    31. for k in range(c):
    32. if image_c[i, j, k] >= limit[0] and image_c[i, j, k] <= limit[1]:
    33. sub_img = image_c1[y1:y2, x1:x2, k]
    34. image_c[i, j, k] = np.max(sub_img)
    35. if len(image.shape) == 2:
    36. image_c = image_c.reshape(h, w)
    37. return image_c
    38. if __name__ == '__main__':
    39. np.random.seed(1)
    40. x = np.random.randint(0, 256, (10, 10))
    41. x[x<150] = 0
    42. y = maxBlur(x)
    43. print('x:\n', x)
    44. print('y:\n', y)

    3 测试结果 

    更多三维、二维感知算法和金融量化分析算法请关注“乐乐感知学堂”微信公众号,并将持续进行更新。

  • 相关阅读:
    jQuery:表格的奇偶行变色,jquery实例之表格隔一行
    企业最关心的ISO三体系认证的几个问题
    JavaScript 乘除法运算时,有精度误差的风险,导致运算结果出现很长的小数点,这种情况怎么解决?
    学习Node js:raw-body模块源码解析
    【电力系统】基于YALMIP 的微网(光伏+风电+蓄电池+微电网+柴油机)优化调度模型附matlab代码
    2023 年 dotnet 仓库社区年度调查已经开始
    根据服务器系统选择对应的MySQL版本
    java计算机毕业设计web开发数码产品推荐平台系统设计与实现源码+mysql数据库+系统+lw文档+部署
    css知识学习系列(6)-每天10个知识点
    平面曲线的弧长与曲率
  • 原文地址:https://blog.csdn.net/suiyingy/article/details/125384666
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号