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

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

  • 虚伪世界伤了谁的浮华(虚伪的世界歌曲)

    虚伪世界伤了谁的浮华(虚伪的世界歌曲)

  • 微信支付分在哪里看(微信分付借钱怎么开通)

    微信支付分在哪里看(微信分付借钱怎么开通)

  • 如何把微信里面的所有信息删除(如何把微信里面的钱转到银行卡里)

    如何把微信里面的所有信息删除(如何把微信里面的钱转到银行卡里)

  • 快手点赞作品看不见了(快手点赞作品看得到吗)

    快手点赞作品看不见了(快手点赞作品看得到吗)

  • 干电池内阻一般多大(干电池在使用过程中,内阻如何变化)

    干电池内阻一般多大(干电池在使用过程中,内阻如何变化)

  • 草图大师怎么渲染(草图大师怎么渲染模型全景图)

    草图大师怎么渲染(草图大师怎么渲染模型全景图)

  • 蓝牙音量小是什么原因(蓝牙手机音量小)

    蓝牙音量小是什么原因(蓝牙手机音量小)

  • 华为手机怎么分身(华为手机怎么分享热点给别人)

    华为手机怎么分身(华为手机怎么分享热点给别人)

  • 注册淘宝账号需要什么(注册淘宝账号需要成年吗)

    注册淘宝账号需要什么(注册淘宝账号需要成年吗)

  • 苹果xr单卡的咋回事(iphonexr 单卡)

    苹果xr单卡的咋回事(iphonexr 单卡)

  • 联通大王卡什么意思(联通大王卡什么套餐划算)

    联通大王卡什么意思(联通大王卡什么套餐划算)

  • 华为畅享10是屏幕指纹嘛(华为畅享10屏幕材质)

    华为畅享10是屏幕指纹嘛(华为畅享10屏幕材质)

  • program files是什么文件(program files是什么文件夹可以移动吗)

    program files是什么文件(program files是什么文件夹可以移动吗)

  • 苹果尾插怎么清理(苹果尾插怎么清灰)

    苹果尾插怎么清理(苹果尾插怎么清灰)

  • 苹果8微信视频怎么美颜(苹果8微信视频来电没声音)

    苹果8微信视频怎么美颜(苹果8微信视频来电没声音)

  • 优活手环m3如何调中文(优活手环怎么关机教程)

    优活手环m3如何调中文(优活手环怎么关机教程)

  • 华为手机怎么设置铃声(华为手机怎么设置青少年模式)

    华为手机怎么设置铃声(华为手机怎么设置青少年模式)

  • airpods序列号查询真伪(airpods序列号查询官网入口)

    airpods序列号查询真伪(airpods序列号查询官网入口)

  • word封面怎么加目录(word封面怎么加到文档里)

    word封面怎么加目录(word封面怎么加到文档里)

  • 苹果6能升级ios13吗(苹果6能升级ios13.6吗)

    苹果6能升级ios13吗(苹果6能升级ios13.6吗)

  • 快手怎么看关注人(快手怎么看关注主播多久了)

    快手怎么看关注人(快手怎么看关注主播多久了)

  • 华为智慧视觉怎么关闭(华为智慧视觉怎么唤醒)

    华为智慧视觉怎么关闭(华为智慧视觉怎么唤醒)

  • ccleaner怎么设置中文(ccleaner怎么设置开机启动)

    ccleaner怎么设置中文(ccleaner怎么设置开机启动)

  • 存储空间s(1:m)什么意思(储存空间用什么字母表示)

    存储空间s(1:m)什么意思(储存空间用什么字母表示)

  • Vue | Vue.js 全家桶 Pinia状态管理(vue全家桶的app项目代码)

    Vue | Vue.js 全家桶 Pinia状态管理(vue全家桶的app项目代码)

  • 帝国CMS扣除会员积分置顶与到期后取消置顶的方法(帝国cms扣除会员怎么办)

    帝国CMS扣除会员积分置顶与到期后取消置顶的方法(帝国cms扣除会员怎么办)

  • 即征即退需要缴纳税款吗
  • 专票要写开户行和账号
  • 开了发票不做收入的账务处理
  • 一般纳税人应交增值税怎么算
  • 有形动产租赁属于营改增吗
  • 贷款公司股权转让合法吗
  • 非金融单位贷款利息收入列示什么科目
  • 弥补上年度亏损
  • 房地产公司预分红犯法吗
  • 销售商品,提供服务以及从事其他经营活动
  • 居民企业股权转让所得
  • 给客户提供的价值
  • 客户减免费用邮件怎么写
  • 折扣销售指
  • 二房东转租如何办理营业执照
  • 结转本月收入类账户到本年利润会计分录
  • 应交增值税明细科目如何结转
  • 填制凭证的内容通常包括
  • 无形资产的累计摊销是什么意思
  • 委托代销受托方怎么做账
  • 建筑业咨询费有哪些
  • 查补以前年度所得税如何填写申报表
  • 进项较大航天信息怎么填
  • 单位预付卡
  • 研发无形资产摊销加计扣除计算
  • 子公司可否将母公司注销
  • 电商平台小规模纳税标准
  • 金税盘不能清卡是啥原因
  • 个人所得税特殊计税方法
  • 企业盈利所得税交多少
  • 可供出售债券投资
  • 购入商品款项尚未入库
  • 建筑总承包企业资质
  • win10要更新系统
  • 行纪合同的效力
  • 当月发生的费用下月支付
  • 局域网游戏电脑
  • 建筑劳务公司计提工资怎么做账
  • php中关键字修饰属性是什么
  • php数组求最大值
  • php 加密
  • ChatGPT解开了我一直以来对自动化测试的疑惑
  • web自动化测试平台
  • vue实现动态菜单权限配置
  • 智能优化算法可以用到哪里
  • 个税系统怎么查询已申报个人明细
  • python中except用法
  • 小规模纳税人差额征收税率是多少
  • 上季度忘记申报个税了
  • 开票资料更改
  • 个税哪种申报不用交个税的
  • 保税仓库税收政策
  • 车出险理赔需要什么材料
  • 财务费用的内容包括哪些
  • 短期借款利息是期间费用吗
  • 保证金159001收益如何计算
  • 提前报废固定资产会导致账面价值减少吗
  • 从基本存款账户划款3万元 向开户银行转帐
  • 电子银行承兑汇票能拆票吗
  • 什么是累计预扣预缴应纳税所得额
  • 搭建docker私有仓库实验报告
  • win8只能应用商店下软件吗
  • windows的气泡屏保会加速
  • mac如何预览字体大小
  • win10系统浏览器怎么换成ie
  • win7系统无线网络
  • linux常见的启动方式
  • 滚小球的实验过程和材料
  • cocos2d教程
  • cocos2dx schedule
  • Activity 的四种启动模式
  • 欢迎使用城市供水信息服务平台
  • python erf
  • 常用的jquery鼠标事件
  • html5仿微博代码
  • android 笔记软件推荐
  • 那些so 叼的android studio 插件
  • 西乡塘区税务局电话
  • 重庆国家税务局发票流向查询
  • 雅加达购物必买的东西
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设