位置: IT常识 - 正文

基于梵·高《向日葵》的 图像阈值处理专题(二值处理、反二值处理、截断处理、自适应处理及Otsu方法)【Python-Open_CV系列(六)】(向梵高致敬油画)

编辑:rootadmin
基于梵·高《向日葵》的 图像阈值处理专题(二值处理、反二值处理、截断处理、自适应处理及Otsu方法)【Python-Open_CV系列(六)】

推荐整理分享基于梵·高《向日葵》的 图像阈值处理专题(二值处理、反二值处理、截断处理、自适应处理及Otsu方法)【Python-Open_CV系列(六)】(向梵高致敬油画),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:梵高向日葵百科,梵高向日葵百度百科,梵高向日葵秒懂百科,梵高向日葵百科,向梵高致敬油画,向梵高致敬油画,《向梵高致敬》,向梵高致敬油画,内容如对您有帮助,希望把文章链接给更多的朋友!

基于梵·高《向日葵》的图像阈值处理专题(二值处理、反二值处理、截断处理、自适应处理及Otsu方法)【Python-Open_CV系列(六)】

文章目录 🍹1. 什么是阈值处理? 🍹2.二值化处理 与 反二值化处理 🍹3. 零处理 🍹4. 截断处理 🍹5.五种处理方式汇总 🍹6. 自适应处理 ✨平均法 cv2.ADAPTIVE_THRESH_MEAN_C ✨高斯法 cv2.ADAPTIVE_THRESH_GAUSSIAN_C 🍹7. Otsu方法

ʚʕ̯•͡˔•̯᷅ʔɞ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ

🍹欢迎各路大佬来到小啾主页指点 ☀️本期文章将学习基于梵·高《向日葵》的图像阈值处理专题(二值处理、反二值处理、截断处理、自适应处理及Otsu方法) - Open_CV系列博文第六篇,我是博主侯小啾。✨ ✨我的博客主页:云雀编程小窝 🌹꧔ꦿ 🌹꧔ꦿ博文内容如对您有所帮助,还请给个点赞 + 关注 + 收藏✨

            

如有疑问欢迎随时在评论区交流。🍹

 🍹1. 什么是阈值处理?

在图像处理中,阈值处理是一种很重要的处理方式。阈值处理即给像素值设定一个阈值,然后所有的像素值都与目标阈值进行比较,根据像素值与阈值的关系,对像素值做出相应的调整,以达到影响图片的效果的预期。在计算机视觉技术中心,阈值处理十分重要,像素在经过阈值处理后,对肉眼观感可能不会太好,但是对程序而言图片上的人或物则通常更容易被搜寻到特征,以被识别出。从而实现识别的目的。

阈值处理常用的方法:threshold()方法。 ✨其语法如下:

threshold(src, thresh, maxval, type, dst=None)

src: 原图thresh: 阈值maxval: 阈值处理采用的最大值,通常选择255作为最大值,即白色。type: 阈值处理类型。

                       常用的阈值处理类型

类型含义cv2.THRESH_BINARY 二值化阈值处理cv2.THRESH_BINARY_INY反二值化阈值处理cv2.THRESH_TOZERO低于阈值零处理cv2.THRESH_TOZERO_INV超出阈值零处理cv2.THRESH_TRUNC截断阈值处理 🍹2.二值化处理 与 反二值化处理

二值化处理,也称二值化阈值处理,该处理使每个像素值与指定的阈值相比较,大于阈值的像素变为最大值,小于阈值的像素值变为零。最终可以使像素只保留两种像素值,得到“非黑即白”的图像(不同与灰度处理)。

反二值化处理的处理结果与二值化处理相反,得到的也是只有黑白两种颜色的图像,不同之处在于大于阈值的像素值变为0,小于阈值的变为阈值处理采用的最大值。

下面,对二值化处理的方式进行示例,

选择图片素材:                  ✨梵高 《向日葵》✨

           

以127作为阈值,255为阈值处理最大值为例,读取图像时,需要先将图像转化为灰度图像。

import cv2# 将图像读成灰度图像img = cv2.imread("sunflowers.jpg", 0) # 做二值化处理t, dst = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)# 其中返回的t即我们选择的阈值127。cv2.imshow('dst', dst) cv2.waitKey() cv2.destroyAllWindows()

处理效果:

           

👇同理,再对《向日葵》做反二值化处理:

import cv2img = cv2.imread("sunflowers.jpg", 0)# 反二值化阈值处理t, dst = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY_INV)cv2.imshow('dst', dst)cv2.waitKey()cv2.destroyAllWindows()

           

 🍹3. 零处理

零处理包括 低于阈值零处理 和 超出阈值零处理(也称低阈值零处理和高阈值零处理)。低于阈值零处理将低于阈值的像素值变为0,超出阈值零处理则将高于阈值的像素值变为0。

import cv2img = cv2.imread("sunflowers.jpg", 0)# 低于阈值零处理t, dst = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO)cv2.imshow('dst', dst)cv2.waitKey()cv2.destroyAllWindows()基于梵·高《向日葵》的 图像阈值处理专题(二值处理、反二值处理、截断处理、自适应处理及Otsu方法)【Python-Open_CV系列(六)】(向梵高致敬油画)

           

import cv2img = cv2.imread("sunflowers.jpg", 0)# 超出阈值零处理t, dst = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO_INV)cv2.imshow('dst', dst)cv2.waitKey()cv2.destroyAllWindows()

👇超阈值零处理效果呈现:            

 🍹4. 截断处理

截断处理也称截断阈值处理,将大于阈值的像素值变成跟阈值一样,小于阈值的像素值则保持不变。

截断处理后图像的整体颜色会变暗,亮度降低,原本浅色区域的颜色会变更浅。

代码示例如下:

import cv2# 将图像读成灰度图像img = cv2.imread("sunflowers.jpg", 0)# 截断处理t, dst = cv2.threshold(img, 127, 255, cv2.THRESH_TRUNC)cv2.imshow('dst', dst)cv2.waitKey()cv2.destroyAllWindows()

           

 🍹5.五种处理方式汇总

👇将以上五种阈值处理方式汇总对比其效果:

import cv2image = cv2.imread(""sunflowers.jpg".jpg")# 因为原图尺寸过大,不方便展示,所以先缩放一倍。image = cv2.resize(image, None, fx=0.5, fy=0.5)# 转化为灰度图像image_Gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)print(image_Gray.shape)# 二值化阈值处理t1, dst1 = cv2.threshold(image_Gray, 127, 255, cv2.THRESH_BINARY)# 反二值化阈值处理t2, dst2 = cv2.threshold(image_Gray, 127, 255, cv2.THRESH_BINARY_INV)# 低于阈值零处理t3, dst3 = cv2.threshold(image_Gray, 127, 255, cv2.THRESH_TOZERO)# 超出阈值零处理t4, dst4 = cv2.threshold(image_Gray, 127, 255, cv2.THRESH_TOZERO_INV)# 截断处理t5, dst5 = cv2.threshold(image_Gray, 127, 255, cv2.THRESH_TRUNC)# 分别显示经过5种阈值类型处理后的图像cv2.imshow("BINARY", dst1)cv2.imshow("BINARY_INV", dst2)cv2.imshow("TOZERO", dst3)cv2.imshow("TOZERO_INV", dst4)cv2.imshow("TRUNC", dst5)cv2.waitKey()cv2.destroyAllWindows()

这五种阈值处理的方法,的处理出的图像轮廓多少还是会有些模糊不清,不利于程序做进一步的处理。使用自适应处理可以有效改善该问题。

 🍹6. 自适应处理

  自适应处理是一种改进过的阈值处理技术,其阈值是对图像区域中的某一正方形区域内的所有色素值使用指定的算法而得到的,从而而对像素进行相应的处理。自适应处理本身不属于阈值处理方法,算是对阈值处理的改进,其使用过程中可以选择使用二值化处理或反二值化处理的处理方式。

OpenCV中,做自适应处理使用的是cv2.adaptiveThreshold方法, 该方法语法如下

adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C, dst=None)

其中, adaptiveMethod 是自适应阈值的计算方法,该方法有两种,

cv2.ADAPTIVE_THRESH_MEAN_C : 对一个正方形区域内的所有像素进行平均加权。cv2.ADAPTIVE_THRESH_GAUSSIAN_C : 根据高斯函数按照像素与中心店的距离对一个正方形区域内的所有像素进行加权计算。

thresholdType 即阈值处理类型。可以是二值化处理(cv2.THRESH_BINARY)或反二值化处理(cv2.THRESH_BINARY_INY)。   blockSize 计算阈值算法中的正方形区域的边长大小。   C 常量 最终的阈值等于均值减去这个常量 或 加权值减去这个常量   dst 经过阈值处理后的图像。

下边分别使用两种阈值计算方法对图片进行自适应处理,两种方法得到的结果有一定的细微差异。

 ✨平均法 cv2.ADAPTIVE_THRESH_MEAN_Cimport cv2image = cv2.imread("sunflowers.jpg")image_Gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)athdMEAM = cv2.adaptiveThreshold(image_Gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 5, 3)cv2.imshow("MEAN_C", athdMEAM)cv2.waitKey()cv2.destroyAllWindows()

              

 ✨高斯法 cv2.ADAPTIVE_THRESH_GAUSSIAN_Cimport cv2image = cv2.imread("sunflowers.jpg")image_Gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)athdGAUS = cv2.adaptiveThreshold(image_Gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 5, 3)cv2.imshow("GAUSSIAN_C", athdGAUS)cv2.waitKey()cv2.destroyAllWindows()

            

 🍹7. Otsu方法

除了自适应处理外,Opencv还提供了Otsu方法来遍历所有可能的阈值,从而得出最合适的阈值。

Ostu方法不是独立的函数方法,其实现基于上边实现五种阈值处理的threshold() 方法,只是需要在其阈值处理类型参数type后方 续写上 + cv2.THRESH_OTSU 字样(非字符串)。

👇示例如下,依然操作向日葵:

import cv2image = cv2.imread("sunflowers.jpg")# 灰度处理image_Gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# t=127的二值化处理t1, dst1 = cv2.threshold(image_Gray, 127, 255, cv2.THRESH_BINARY)# OTSU的二值化处理t2, dst2 = cv2.threshold(image_Gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)# 打印最佳阈值print(t2)cv2.imshow("BINARY", dst1)cv2.imshow("OTSU", dst2) cv2.waitKey() cv2.destroyAllWindows()

程序执行结果如下:          

👇程序执行效果如下,左图为阈值为127时的二值化处理结果,右图为阈值最佳时的二值化处理结果,此时阈值为147.0。可以看出,右图中的向日葵的轮廓明显要比左图相对更为清晰。

本次分享就到这里,如果您有更棒的理解或者技术方案,或是疑问,欢迎随时在评论区分享或交流!我们下期blog见。 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ

🌹꧔ꦿ本系列blog传送门:   ✨OpenCV图像处理基本操作 【Python-Open_CV系列(一)】   ✨OpenCV像素处理基本操作 【Python-Open_CV系列(二)】   ✨OpenCV之 BGR、GRAY、HSV色彩空间&色彩通道专题 【Python-Open_CV系列(三)】   ✨OpenCV绘制图像与文字(可作为脚手架代码)(python) 【Python-Open_CV系列(四)】   ✨OpenCV图像几何变换专题(缩放、翻转、仿射变换及透视)【python-Open_CV系列(五)】   ✨基于梵·高《向日葵》的 图像阈值处理专题(二值处理、反二值处理、截断处理、自适应处理及Otsu方法)【Python-Open_CV系列(六)】   ✨OpenCV基本功 之 图像的掩模、运算 & 合并专题 -小啾带学【Python-Open_CV系列(七)】   ✨《三英战吕布》 - 图像模板匹配 【Python-Open_CV系列(八)】   ✨OpenCV滤波器 龙门石窟篇【Python-Open_CV系列(九)】(均值滤波器、中值滤波器、高斯滤波器、双边滤波器)   ✨Open_CV形态学运算专题 (腐蚀&膨胀、开&闭运算、梯度运算、顶帽运算黑帽运算 )【Python-Open_CV系列(十)】   ✨霍夫变换看不懂?小啾带你串一遍:OpenCV图形检测专题 这样学最简单【Python-Open_CV系列(十一)】   ✨小啾带你开天眼 之 开启py-OpenCV摄像头及视频处理【Python-Open_CV系列(十二)】   ✨小啾带你开天眼 之 人脸检测与识别(以及华强、皇叔、高祖配墨镜特效)【Python-Open_CV系列(十三)】

本文链接地址:https://www.jiuchutong.com/zhishi/297900.html 转载请保留说明!

上一篇:Vue笔记(五)vuex(vue笔记项目)

下一篇:这是我见过最牛逼的滑动加载前端框架(这是我见过最牛的人英语)

  • 公司换股东需要本人去吗
  • 非企业员工可以报销差旅费吗
  • 在建工程人员工资计入产品成本吗
  • 以前年度损益调整在借方是什么意思
  • 砖厂开票员的工作流程
  • 收到就业补贴财务如何做账
  • 建筑安装企业增值税税负
  • 股权转让评估费可以有公司承担吗
  • 二手机械设备买卖合同
  • 以前年度亏损本季度盈利所得税
  • 小规模纳税人出租房屋增值税税率是多少
  • 建筑劳务增值税
  • 个人取得下列各项所得须自行申报纳税的有
  • 公司用上年多缴的社保
  • 税务核定利润的标准
  • 增值税发票确认时间
  • 一般纳税人进货收到普票怎么做账
  • 哪些项目可以在城镇开发边界外
  • 更换营业执照要多久才能拿到
  • 坏账损失企业所得税
  • 如何让解决中世纪基督教世界黑暗
  • msiexec.exe是什么进程介绍
  • 单位购买金税盘的分录
  • php 数组
  • win10怎么推送win11
  • php打开文件读取内容
  • mac osx10.11
  • 应付职工薪酬怎么做记账凭证
  • 代垫运费增值税怎么算
  • 其他业务支出的二级科目有哪些
  • 在途物资运费会计科目怎么写
  • CodeIgniter视图使用注意事项
  • 深入解析Laravel5.5中的包自动发现Package Auto Discovery
  • thinkphp删除数据
  • 信用减值损失会影响所有者权益吗
  • 股权转让怎么做帐务处理
  • 收到银行开具的手续费的专票会计分录
  • vue如何销毁页面
  • php获取目录所有文件
  • php图片上传插件
  • php读取excel文件
  • 全盘会计和总账会计一样吗
  • 刷题有什么作用
  • Selenium.Webdriver最新语法教程(附Chrome实例演示)
  • 好家伙41集
  • btrfs 读取
  • 建筑业的账务处理方法
  • 电子银行回单可以导出吗
  • 所得税汇算清缴报告在哪查
  • 应收账款账龄如何填写
  • 筹备期间费用怎么做分录
  • 出口商品没有发票可以入收入吗
  • 交通费怎么报销
  • 公司组织出国旅游可以不带钱吗
  • 累计盈余需要设置明细科目吗
  • 子公司注销合并报表少数股东权益的处理
  • 仓库转租合同
  • 专用设备技术维护费
  • 监控 固定资产
  • 纳税申报表多缴了怎么办
  • 如何理解非货币性资产
  • 应交税费应交增值税已交税金怎么用
  • win7系统的笔记本电脑有哪些
  • 电脑开机自动弹出
  • mac新版系统
  • fssm32.exe是什么进程 有什么作用 fssm32进程查询
  • win8设置宽带连接
  • Windows10 Redstone首个预览版即将发布 开始推送全新的预览分支
  • javascript ?
  • angularjs表格控件
  • js类继承的几种方式
  • js 仿真
  • 有关javascript的书
  • js 上传
  • jquery回车触发事件
  • js实现vue
  • javascript怎么样
  • 四川十大纳税企业
  • 新车怎么上深圳牌
  • 今年烟草税多少钱
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设