点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

通过HSV色阶使用彩色图像可以分割来分割图像中的对象,但这并不是分割图像的唯一方法。为什么大多数人偏爱色度而不是RGB / HSV分割?

  • 可以获得RGB / HSV通道之间的比率。

  • 可以使用由辅助颜色和其他颜色的混合物组成的目标色块。

我们将色度分割定义为利用RG通道的色度空间从图像中提取目标的过程。后者构成了一个二维颜色表示,它忽略了与强度值相关的图像信息。我们通过观察不同颜色通道的比例来实现这一点,并使用标准化的RGB空间来映射它。因此,为了计算图像的RG色度,我们使用以下方程式:

我们主要只看r和g方程,因为从那里我们可以直观地计算b通道,让我们使用我们的老朋友Python将色度分割付诸实践。在继续执行之前,请安装以下库:

from skimage.io import imread, imshow
import matplotlib.pyplot as plt
import numpy as np

本文实践操作将使用此图像:

图像处理步骤:

步骤1:计算图像的RG色度

  • 这是通过使用引言中定义的方程式完成的。

步骤2:计算颜色值的2D直方图(原始图像)

  • 这是通过使R和色度值均变平并将其输入hist2d函数中来实现的。

  • 通过这一点,可以注意到什么颜色或一组颜色构成了我们的图像。

步骤3:选择参考图片补丁

  • 从感兴趣的对象生成补丁。在这种情况下,我们将草莓细分。因此,将要选择的补丁将是草莓的补丁。

步骤4:计算补丁的RG色度

  • 重复步骤1,但在步骤3中使用图像补丁

步骤5:计算颜色值的2D直方图(色标)

  • 重复步骤2,但在步骤3中使用图像

到目前为止,我们已经获得了相关图像的RG色度值。现在,我们进行下一步-参数分割。

第6步:参数细分

  • 此步骤要求我们拟合高斯分布,该分布将确定属于感兴趣颜色的像素。在执行此操作之前,应从感兴趣的对象(参考补丁)计算平均值和标准偏差。然后将这些反馈给高斯分布函数。

步骤1-6的代码实现如下实现:

#image chromaticity valuesfruits_R = fruits[:,:,0]*1.0/fruits.sum(axis=2)fruits_G = fruits[:,:,1]*1.0/fruits.sum(axis=2)#patchpatch_strw = fruits[60:90,50:90,:]#patch chromaticity valuespatch_R = patch_strw[:,:,0]*1.0/patch_strw.sum(axis=2)patch_G = patch_strw[:,:,1]*1.0/patch_strw.sum(axis=2)#mean and stdev calculation of patch std_patch_R = np.std(patch_R.flatten())mean_patch_R = np.mean(patch_R.flatten())std_patch_G = np.std(patch_G.flatten())mean_patch_G = np.mean(patch_G.flatten())#gaussian functiondef gaussian(p,mean,std):return np.exp(-(p-mean)**2/(2*std**2))*(1/(std*((2*np.pi)**0.5)))x = np.linspace(0,1)y = gaussian(x,mean_patch_R,std_patch_R)#plottingfig, ax = plt.subplots(2, 3, figsize=(20, 7))ax[0,0].scatter(fruits_R.flatten(),fruits_G.flatten())ax[0,0].set_title('RG Chromaticity', size=14)ax[0,1].hist2d(fruits_R.flatten(), fruits_G.flatten(),   bins=100,cmap='binary');ax[0,1].set_title('Color Values 2D Histogram', size=14)ax[0,2].imshow(patch_strw)ax[0,2].set_title('Strawberry Patch', size=14)ax[1,0].scatter(patch_R.flatten(),patch_G.flatten())ax[1,0].set_title('Patch RG Chromaticity', size=14)ax[1,1].hist2d(patch_R.flatten(), patch_G.flatten(), bins=100,cmap='binary')ax[1,1].set_title('Patch Color Values 2D Histogram', size=14)ax[1,2].plot(x,y)ax[1,2].set_title('Gaussian Plot', size=14)fig.suptitle('Strawberry', size = 30)

综上所述,类似于彩色图像分割方法,存在一个任意确定的阈值。尝试并尝试使用这些值,然后选择将返回最理想输出的值。同样,在最终图中,尽管草莓被清楚地分割了,但仍然捕获了无关的信息。这是进行形态学操作以方便进一步清洁图像的地方,因此分割与以往一样准确。

— — 完 — —

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

基于OpenCV实战的图像处理:色度分割相关推荐

  1. 基于Opencv的数字图像处理技巧(python)

    图像处理(image processing),用计算机对图像进行分析,以达到所需结果的技术.又称影像处理.图像处理一般指数字图像处理.数字图像是指用工业相机.摄像机.扫描仪等设备经过拍摄得到的一个大的 ...

  2. 基于OpenCV的实时车道线分割&车道保持系统(源码&教程)

    1.研究背景 汽车主动安全系统能够实现风险的主动预防和规避,其能有力缓解当前我国汽车交通事故频发的困境,故对其的相关研究得到了国家的大力支持. 车道保持辅助系统(LKAS,Lane Keeping A ...

  3. Java服务器部署基于OpenCV的C++图像处理项目(三)图片上传并返回处理图

    Java服务器部署基于OpenCV的C++图像处理项目(三)图片上传并返回处理图 1.上传图片并返回灰度图功能 由于使用的springboot开发,直接写一个upload接口供图片上传,以下是spri ...

  4. 基于opencv实现模块化图像处理管道

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 在这篇文章中,我们将学习如何为图像处理实现一个简单的模块化管道,我 ...

  5. 基于OpenCV实战:提取中心线

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|AI算法与图像处理 问题 前几天有个人问了我一个问题,问 ...

  6. 基于OpenCV实战:3步实现图像降噪

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 在本文中,我们将展示如何通过三个简单的步骤来实现降噪.我们将使用机 ...

  7. 基于OpenCV实战:绘制图像轮廓(附代码)

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 山区和地形图中海拔高的区域划出的线称为地形轮廓,它们提供了地形的高 ...

  8. 基于OpenCV实战:车牌检测

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 拥有思维导图或流程将引导我们朝着探索和寻找实现目标的正确道路的方向 ...

  9. 基于OpenCV实战:对象跟踪

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 介绍 跟踪对象的基本思想是找到对象的轮廓,基于HSV颜色值. 轮廓 ...

最新文章

  1. ASP.NET网站建设基本常用代码
  2. raft算法mysql主从复制_Raft算法赏析
  3. 如何在cmd运行python文件夹_python怎么在cmd运行文件夹
  4. 2021牛客暑期多校训练营4 B - Sample Game 期望dp\生成函数
  5. LeetCode 1121. 将数组分成几个递增序列
  6. 小程序 图片上传php后台,微信小程序图片选择、上传到服务器、预览(PHP)实现实例...
  7. avg最多用多少列 mysql_使用MySQL中的AVG函数求平均值的教程
  8. 30 岁后,哪些职业瓶颈阻碍了你的成长?
  9. ul列表中包含input时line-height属性失效的解决办法
  10. 吹捧导师师娘“神论文”的作者,被处理了
  11. 以太网误码率测试软件,最完美的PAM4标准通信数据测试方案大全
  12. 为何说张三丰是个优秀的程序员?
  13. JS:中文输入法,日文输入法做最大位数Check的坑maxlength
  14. ACM/ICPC 大赛常见英语词汇
  15. python微信刷票脚本在哪_微信刷票Python脚本教程
  16. 推荐一篇微服务硬核文章 6 张图带你搞懂微服务
  17. C++知三角形三边求面积
  18. 视距无线传输 (Line of Sight,LOS)
  19. SWAN之ikev2协议inactivity-timeout配置测试
  20. 进口牛羊肉抄码器厂家OCR扫数字重量累加扫码机冷库进出口牛羊肉抄码机进口冻肉抄码设备 进口牛羊肉抄码枪

热门文章

  1. BERT拿下最佳长论文奖!NAACL 2019最佳论文奖公布
  2. 【无人驾驶年度盘点】2018年15大单点技术机会,5大创业机遇,投资走向上游,行业极速细分
  3. 一个基于 Spring Boot 的项目骨架
  4. MyBatis源码:原来 resultMap 解析完是这样
  5. nginx 反向代理和负载均衡策略实战案例
  6. 报名即将截止,中国移动“梧桐杯”大数据应用创新大赛,寻找大数据敢想者!...
  7. MIT副教授赵宇飞团队登数学四大顶刊,华人作者中两位是本科生,最小的是00后...
  8. 导师对帮助研究生顺利完成学业提出了20条劝告:第一,不要有度假休息的打算.....
  9. 「苹果牌」电动车要来了:最早明年见,还带着突破性电池技术
  10. 逼学生作弊的AI阅卷老师