首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

OpenCV-Python图形图像处理:利用TopHat顶帽获取背景色中的噪点

  • 23-09-22 14:21
  • 4507
  • 9099
blog.csdn.net

☞ ░ 前往老猿Python博客 https://blog.csdn.net/LaoYuanPython ░

一、顶帽简介

顶帽(Top Hat),又称“礼帽”运算,其结果图像为原图像与其开运算的差,即:
dest=src-open(src,kernal)

由于开运算是先腐蚀后膨胀,会去除背景色上的噪点或者轮廓线上的毛刺和凸起,同时也会缩小图像前景轮廓的范围,实际上也就是放大了图像间裂缝或者局部背景色区域,因此从原图中减去开运算后的图,运算结果保留了原图那些相对比周边更明亮的区域,如背景色中的白色噪点或轮廓线。所以顶帽可以用来分离比邻近区域亮一些的线条或噪点,当一幅图像具有大幅的背景(如黑底)的时候,可以使用顶帽运算提取暗背景下的亮色点或线等物体。

顶帽在OpenCV-Python的调用语法如下:
morphologyEx(src, CV2.MORPH_TOPHAT, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None)

关于morphologyEx的介绍请参考《OpenCV-Python图像形态变换概述及morphologyEx函数介绍: http://iyenn.com/rec/324891.html》。

二、利用顶帽提取噪点

2.1、案例1:处理黑色背景的灰度图

2.1.1、案例原图

在如下图像(对应文件:大背景小前景图例.jpg)中,第一行第二个图像和第二行第一个图像临近区域都有噪点:
在这里插入图片描述

2.1.2、处理代码

import cv2
import numpy as np

from opencvPublic import print2DMatrix,preparePreviewImg,previewImgList,previewImg

def morphologyExTest(imgObj,imgTitle=''):
    if isinstance(imgObj, str):
        img = cv2.imread(imgObj)#, cv2.IMREAD_GRAYSCALE)
        if img is None:
            img = cv2.imdecode(np.fromfile(imgObj, dtype=np.uint8), -1)
        imgTitle = imgTitle+imgObj+': '
    else:
        imgTitle = imgTitle + ': '
    if len(img.shape)==2: channel = 1
    else: channel = img.shape[2]
    if channel==3:
        img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    elif channel==4:
        img = cv2.cvtColor(img,cv2.COLOR_BGRA2GRAY)
    ksize = (3,3)
    kernal = cv2.getStructuringElement(cv2.MORPH_RECT,ksize )
    preparePreviewImg(cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernal),imgTitle+f'顶帽,矩形核大小{ksize}')

def morphologyTest():
    morphologyExTest(r'f:pic大背景小前景图例.jpg')
    previewImgList()

morphologyTest()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

上面代码中使用的图像预览的函数请见《OpenCV-Python图像运算变换处理:开运算和闭运算以及不同核矩阵的影响分析: http://iyenn.com/rec/324926.html》的介绍。

2.1.3、结果图像

经上述代码处理后,该原图顶帽运算的结果图像如下:
在这里插入图片描述
从上述结果图像可以看到,顶帽将黑色背景下的白色噪点以及细小的轮廓图像获取出来了,而那些轮廓线稍微大些的轮廓在顶帽后消失了。

2.2、案例2:处理彩色图像

将上述代码中处理的原图替换为如下图像(文件名:山林铁轨.JPG):
在这里插入图片描述
得到如下顶帽结果图像:
在这里插入图片描述
可以看到原图中相对比较亮的文字被提取出来。

2.3、案例3:处理黑色背景的彩色图像

原图如下(文件名:简单图形.png):
在这里插入图片描述
得到如下顶帽结果图像:
在这里插入图片描述

可以看到白色线条被提取出来。

三、小结

本文简单介绍了顶帽的概念、原理和作用,以及OpenCV-Python的具体实现,并提供了三个利用顶帽提取图像中前景色噪点或小的轮廓,可以看到通过顶帽可以提取出相对源图像中小的比较亮的部分。其实顶帽就是用一个结构元素(核矩阵)通过开操作从一副图像中删除前景色中比较成整体稍大的部分,留下来前景色中相对比较亮的细小部分,就是从图像的暗背景上提取细小的亮物体,因此顶帽这个特性可以用于校正不均匀光照的影响(请参考博文:《光照不均匀图像分割技巧2——顶帽变换和底帽变换》)。

写作不易,敬请支持:

如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

四、形态变换博文传送门

下面是老猿博文中与形态变换相关的博文列表:

  1. http://iyenn.com/rec/324890.html OpenCV-Python图像处理:腐蚀和膨胀原理及erode、dilate函数介绍
  2. http://iyenn.com/rec/324926.html OpenCV-Python图像运算变换处理:开运算和闭运算以及不同核矩阵的影响分析
  3. http://iyenn.com/rec/324891.html OpenCV-Python图像形态变换概述及morphologyEx函数介绍
  4. http://iyenn.com/rec/324927.html OpenCV-Python图像运算变换处理:形态学梯度运算及分类
  5. http://iyenn.com/rec/325150.html OpenCV-Python中预览超大图的程序实现方法
  6. http://iyenn.com/rec/324928.html OpenCV-Python图形图像处理:利用TopHat顶帽获取背景色中的噪点
  7. http://iyenn.com/rec/324929.html OpenCV-Python图形图像处理:利用黑帽去除图像浅色水印
  8. http://iyenn.com/rec/324533.html OpenCV-Python击中击不中HITMISS形态变换详解

更多OpenCV-Python的介绍请参考专栏《OpenCV-Python图形图像处理 》
专栏网址:http://iyenn.com/index/link?url=https://blog.csdn.net/laoyuanpython/category_9979286.html

关于老猿的付费专栏

老猿的付费专栏《使用PyQt开发图形界面Python应用 》(http://iyenn.com/index/link?url=https://blog.csdn.net/laoyuanpython/category_9607725.html)专门介绍基于Python的PyQt图形界面开发基础教程,付费专栏《moviepy音视频开发专栏》 (http://iyenn.com/index/link?url=https://blog.csdn.net/laoyuanpython/category_10232926.html)详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,两个专栏都适合有一定Python基础但无相关知识的小白读者学习。

付费专栏文章目录:《moviepy音视频开发专栏文章目录》(http://iyenn.com/rec/324326.html)、《使用PyQt开发图形界面Python应用专栏目录 》(http://iyenn.com/rec/324324.html)。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《专栏:Python基础教程目录》(http://iyenn.com/index/link?url=https://blog.csdn.net/laoyuanpython/category_9831699.html)从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

跟老猿学Python、学OpenCV!

☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython ░

文章知识点与官方知识档案匹配,可进一步学习相关知识
OpenCV技能树首页概览20473 人正在系统学习中
老猿Python
微信公众号
专注Python相关语言、图像音视频处理、AI
注:本文转载自blog.csdn.net的LaoYuanPython的文章"https://blog.csdn.net/LaoYuanPython/article/details/110223709"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top