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

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

  • iwatch调节声音大小方法(怎么调低iwatch声音)

    iwatch调节声音大小方法(怎么调低iwatch声音)

  • 微信如何转发(微信如何转发朋友圈视频和文字)

    微信如何转发(微信如何转发朋友圈视频和文字)

  • 华为荣耀9x是多大的屏(华为荣耀9x是多少毫安的电池)

    华为荣耀9x是多大的屏(华为荣耀9x是多少毫安的电池)

  • 抖音里不能下载的视频要保存下来的方法(抖音. 下载)

    抖音里不能下载的视频要保存下来的方法(抖音. 下载)

  • 苹果7怎么插耳机(苹果7怎么插耳机没反应)

    苹果7怎么插耳机(苹果7怎么插耳机没反应)

  • oppo手机一直语音报读怎么处理(oppo手机一直语音说话进不去主屏幕)

    oppo手机一直语音报读怎么处理(oppo手机一直语音说话进不去主屏幕)

  • win10屏幕中间有透明框(win10屏幕中间有个准星怎么消除)

    win10屏幕中间有透明框(win10屏幕中间有个准星怎么消除)

  • 电脑连接打印机需要下载什么软件(电脑连接打印机步骤图)

    电脑连接打印机需要下载什么软件(电脑连接打印机步骤图)

  • 小米手机的睡眠模式建议开吗(小米手机的睡眠监测数据在哪里看)

    小米手机的睡眠模式建议开吗(小米手机的睡眠监测数据在哪里看)

  • 哔哩哔哩是什么样的网站(哔哩哔哩是什么平台,适合中学生吗)

    哔哩哔哩是什么样的网站(哔哩哔哩是什么平台,适合中学生吗)

  • 打印机用墨盒还是硒鼓(打印机用墨盒还是墨水)

    打印机用墨盒还是硒鼓(打印机用墨盒还是墨水)

  • 苹果还原所有设置是什么意思(苹果还原所有设置)

    苹果还原所有设置是什么意思(苹果还原所有设置)

  • 微信私密朋友圈怎么自己也看不到(微信私密朋友圈怎么设置公开)

    微信私密朋友圈怎么自己也看不到(微信私密朋友圈怎么设置公开)

  • 绿联充电器伤电池吗(绿联充电器头好不好)

    绿联充电器伤电池吗(绿联充电器头好不好)

  • word数字怎么竖排版(word数字怎么竖版)

    word数字怎么竖排版(word数字怎么竖版)

  • 怎么找淘宝小二介入(闲鱼纠纷怎么找淘宝小二)

    怎么找淘宝小二介入(闲鱼纠纷怎么找淘宝小二)

  • 手机怎么把两张照片拼在一起(手机怎么把两张图片合成一个pdf文件)

    手机怎么把两张照片拼在一起(手机怎么把两张图片合成一个pdf文件)

  • 转转退款多久到账(转转退款能立马到账吗)

    转转退款多久到账(转转退款能立马到账吗)

  • 为什么我的快手没有浏览设置(为什么我的快手没有赞赏功能)

    为什么我的快手没有浏览设置(为什么我的快手没有赞赏功能)

  • 华为p30有人脸解锁吗(华为p30人脸识别后不能马上开锁呢)

    华为p30有人脸解锁吗(华为p30人脸识别后不能马上开锁呢)

  • 电脑求和怎么操作(电脑求和怎么操作教程sum)

    电脑求和怎么操作(电脑求和怎么操作教程sum)

  • 天猫母婴店入驻条件(天猫母婴室)

    天猫母婴店入驻条件(天猫母婴室)

  • Vue3中watch监听对象的属性值,监听源必须是一个getter函数(vue watch监听localstorage变化)

    Vue3中watch监听对象的属性值,监听源必须是一个getter函数(vue watch监听localstorage变化)

  • 社保怎么进行账单查询
  • 主办会计跟会计有什么区别
  • 房地产企业成本包括哪些
  • 对外捐赠固定资产属于营业外支出吗
  • 企业所得税减免优惠政策
  • 速达建账套期初数据
  • 银行日记账写错了怎么改
  • 公司收承兑贴现的会计分录
  • 去银行提取备用金开支票怎么填
  • 税务局返还的个税手续费税率
  • 预交税费怎么做分录
  • 工程毛利为亏损的原因
  • 法院的申请执行费用什么时候收取
  • 购销合同印花税怎么算
  • 固定资产未验收投入使用
  • 苗木增值税发票税率
  • 人工费用占销售收入比重
  • 本年利润年末怎么结转到利润分配
  • 2月发1月工资个税怎么算
  • 普通股资本成本的计算
  • 什么经营范围可以开培训费
  • 工业企业预付材料款时一般应借记什么账户
  • win10如何设置一键还原系统
  • 如何取消开始菜单的程序
  • 本期已缴税额不能大于本期应纳税额
  • 返利冲减收入
  • 发票上没有校验码
  • 怎样提高网速呢知乎
  • 前端get请求传多个参数
  • PHP:ignore_user_abort()的用法_misc函数
  • hhcol.exe
  • 内格罗斯岛
  • ui.exe啥意思
  • php获取get
  • [Vue warn]: Error in created hook: “TypeError: Cannot read properties of undefined (reading ‘$on‘)“
  • axure rp9视频教程
  • Thinkphp和onethink实现微信支付插件
  • 毕业设计教程
  • 代缴社保可以领住房补贴吗
  • 税法折旧和会计折扣会计分录
  • 应交增值税的账务处理有哪两种
  • 现金流量表季度期初现金余额怎么填
  • 年金现值系数和年金终值系数的公式
  • 有外币账户的企业叫什么
  • DEDECMSV5.6将软件下载次数直接生成静态
  • 损益类账户期末有余额吗
  • 专项扣除三险一金是哪三险
  • 含税与不含税的计算公式
  • 使用mysqldump备份数据库
  • 一般纳税人认定书是什么样子
  • 电子退库收入怎么入账
  • 增值税的专用发票金额含税吗
  • 逾期未认证的增值税发票处理办法
  • 产品研发专利
  • 总分公司如何承担责任
  • 公司内部核算调研报告
  • 工程已完工未开发票确认收入吗
  • mysql数据库全量备份
  • mysql数据库内存缓存设置
  • xp怎么关闭自启动
  • bash.exe
  • ramaint.exe - ramaint是什么进程 有什么用
  • win7系统怎么设置开机密码?
  • 怎么才能给电脑提速
  • Windows7忘记开机密码一键还原
  • windows 8whql
  • linux用什么写c
  • linux中怎么在文件中添加内容
  • preorder遍历
  • 网页字体大小调整方案
  • js面向对象编程实例
  • Intermediate Unity 3D for iOS: Part 2/3
  • Python的flask框架教程
  • js网页背景色
  • javascript怎么学好
  • javascript面向对象 第三方类库
  • python不同进制的整数之间可以直接运算
  • HttpClient通过Post上传文件
  • 个人出租住房增值税免税政策
  • 税务备案表银行留存
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设