位置: 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笔记项目)

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

  • 华为mate10怎么开启应用分身(华为mate10怎么开悬浮窗)

    华为mate10怎么开启应用分身(华为mate10怎么开悬浮窗)

  • 小米10支持哪些传感器(小米10支持哪些蓝牙协议)

    小米10支持哪些传感器(小米10支持哪些蓝牙协议)

  • iqooneo3是塑料机身吗(iqoo3是塑料机身吗)

    iqooneo3是塑料机身吗(iqoo3是塑料机身吗)

  • 手机淘宝怎么发布洋淘(手机淘宝怎么发word文档)

    手机淘宝怎么发布洋淘(手机淘宝怎么发word文档)

  • 微信向商家付款怎么设置密码(微信向商家付款付不出咋回事)

    微信向商家付款怎么设置密码(微信向商家付款付不出咋回事)

  • 乐视主要业务有哪些(乐视主要经营业务)

    乐视主要业务有哪些(乐视主要经营业务)

  • Word艺术字文字效果怎么设置(Word艺术字文字效果下翘)

    Word艺术字文字效果怎么设置(Word艺术字文字效果下翘)

  • 小米手环2绑定失败(小米手环2绑定不了小米运动)

    小米手环2绑定失败(小米手环2绑定不了小米运动)

  • 怎样删除爱奇艺搜索发现的内容(怎样删除爱奇艺观看历史)

    怎样删除爱奇艺搜索发现的内容(怎样删除爱奇艺观看历史)

  • 中国电信属于什么单位(中国电信属于什么级别的央企)

    中国电信属于什么单位(中国电信属于什么级别的央企)

  • 为什么抖音发的视频只有自己可以看到(为什么抖音发的视频清晰度不高)

    为什么抖音发的视频只有自己可以看到(为什么抖音发的视频清晰度不高)

  • 微信自己评论自己别人能看到吗(微信自己评论自己别人看不见)

    微信自己评论自己别人能看到吗(微信自己评论自己别人看不见)

  • qq视频通话最多几人

    qq视频通话最多几人

  • 退款一定要原路返回吗(退款必须要商家同意才能退吗)

    退款一定要原路返回吗(退款必须要商家同意才能退吗)

  • 手机进水了开不了机怎么办(手机进水了开不开机了,能不能把里面东西)

    手机进水了开不了机怎么办(手机进水了开不开机了,能不能把里面东西)

  • 蓝牙怎么接支付宝音箱(蓝牙移动支付)

    蓝牙怎么接支付宝音箱(蓝牙移动支付)

  • 怎么查一个人的电话号码(怎么查一个人的征信有没有问题)

    怎么查一个人的电话号码(怎么查一个人的征信有没有问题)

  • 奔腾至强处理器与高能奔腾处理器比较(至强奔腾酷睿赛扬)

    奔腾至强处理器与高能奔腾处理器比较(至强奔腾酷睿赛扬)

  • 快手评论怎么不让别人看(快手评论怎么不让好友看见)

    快手评论怎么不让别人看(快手评论怎么不让好友看见)

  • wlan任我用套餐怎么用(wlan任我用套餐怎么连接)

    wlan任我用套餐怎么用(wlan任我用套餐怎么连接)

  • 骁龙855多少ghz(骁龙855多少hz)

    骁龙855多少ghz(骁龙855多少hz)

  • 苹果手机抖音怎么上传音乐(苹果手机抖音怎么清理内存空间)

    苹果手机抖音怎么上传音乐(苹果手机抖音怎么清理内存空间)

  • launcher什么意思(epiclauncher什么意思)

    launcher什么意思(epiclauncher什么意思)

  • 华为mate20pro防水吗(华为mate20pro防水等级)

    华为mate20pro防水吗(华为mate20pro防水等级)

  • oppo如何隐藏应用(OPPO如何隐藏应用使用时间)

    oppo如何隐藏应用(OPPO如何隐藏应用使用时间)

  • 日落后的托莱多全景,西班牙 (© Frank Fischbach/Alamy)

    日落后的托莱多全景,西班牙 (© Frank Fischbach/Alamy)

  • discuz如何去掉portal.php(discuz关闭电脑版)

    discuz如何去掉portal.php(discuz关闭电脑版)

  • 证书挂靠要申报个人所得税年度汇算吗
  • 销项税额和进项税额发票怎么区别
  • 审计调整分录做在哪一年
  • 发票税号不对还能报销吗
  • 收到货物损失赔偿标准
  • 资产负债表项目的编制方法
  • 资产负债表存货项目期末余额怎么算
  • 集体企业弊端
  • 农产品进项税额计算扣除的方法
  • 补充协议如何生效
  • 银行对公贷款利息多少
  • 转让无形资产收入属于销售收入吗
  • 公司购入房产账务处理
  • 促销活动赠品应如何账务处理
  • 废品损失科目月末
  • 无票收入可以存钱吗
  • 可变现净值是不是就是毛利
  • 个税7月申报7月怎么填
  • 小型微利企业要交残保金吗
  • 装修费用资本化的条件
  • win10新建文件夹快捷键ctrl加什么
  • 代发工资要缴纳社保吗
  • 支付设备维修费用计入什么科目
  • Win10 Build 21354 太阳谷ISO镜像版体验报告 含下载地址
  • php用户登录用的什么技术
  • phpstudy如何查看错误日志
  • 电脑bios错误怎么办
  • elf.exe是什么程序
  • 笔记本保养技巧和方法
  • 工地需要安装什么标识牌
  • 白鹤芋的养殖方法和注意事项
  • Create OpenAI Account的教程来啦,赶紧学习吧!
  • php将数字转为字符串
  • PHP:imagecolormatch()的用法_GD库图像处理函数
  • icon图标教程
  • 销售地下车库缴纳哪些税
  • 商誉减值后
  • 成本费用科目包括
  • 工资属于营业成本
  • yolov5目标检测代码
  • 代码简单图案
  • js map()
  • 织梦怎么添加相关
  • php zmq
  • 保障金纳入地方财政吗
  • 季度企业所得税会计分录怎么做
  • 预缴税款为什么不能跨月申报
  • 小规模纳税人如何申报增值税
  • sql server row_number over
  • 工资是什么?包括哪些
  • 服务费可以计入主营业务成本吗
  • 背书的银行承兑汇票怎么做账
  • 以前年度损益调整
  • 营改增后转让土地使用权怎么交增值税
  • 开外经证怎么预约办理
  • 承兑汇票到期取现手续费
  • 材料采购发生的共同费用可以按什么作为分配基础
  • 人力资源差额税率
  • 银行对公账户维护费申请表模板
  • 房地产企业成本控制存在的问题及对策
  • 设置账本应当遵循哪些原则
  • sqlserver数据库和mysql区别
  • 修改linux系统ip
  • winxp系统停止服务
  • windows提示滑动以关闭电脑
  • windows8.1显卡驱动
  • win81蓝屏重启故障
  • win10系统可以不用杀毒软件吗
  • win7系统无wifi连接
  • vim如何在文件中添加
  • nodejs数据加密
  • vue配置api
  • scrollview用法
  • vue music
  • Node.js中的http请求客户端示例(request client)
  • 用python画roc曲线
  • jquery获取当前点击的元素
  • python string包
  • 哪些初级农产品可以免税
  • 基层税务局长工作职责
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设