本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。
提出问题及初步分析
在计算机中图片一般用数组储存,以像素点为单位。
import cv2 as cv |
----返回值--- (323, 500, 3) #(高、宽、通道数) 484500 #像素点个数 |
在RGB颜色空间下,每个像素点的颜色由R、G、B三通道组成,RGB颜色空间以R(Red红)、G(Green绿)、B(Blue蓝)三种基本色为基础,进行不同程度的叠加,产生丰富而广泛的颜色,所以也叫三基色模式。每个通道的取值范围从0到255,每种颜色都有对应的RGB值。
火焰也是如此,只要找到火焰颜色的RGB值的规律,就可以借此来识别图中的火焰。那么如何找到火焰的RGB值规律呢?
解决问题
最简单的方法就是统计学中的抽样调查,找几张只有火焰的图,读取它们的RGB值,并从中找出规律。也可以参考他人所写的相关文章,直接借用别人的数据。
例如下图:
|
----返回值--- b、g、r三通道均值分别为5.259146666666667、33.386674666666664、74.47014266666666 |
分析问题
除了RGB的取值范围存在规律之外,RGB三者的值之间也存在关系,这里直接提供一些数据作为参考。
火焰RGB均值取值范围:R=217、G=109、B=78
RGB模式下提取疑似火焰
上述式子中R(x,y),G(x,y),B(x,y)表示该像素点三种颜色的通道值,Rmon表示R通道的平均值, K代表总像素点数。
疑似火焰区域的关系式:
r=R/(R+G+B)
g=G/(R+G+B)
b=B/(R+G+B)
g>=0.846b+0.048
g<=-0.461b+0.495
g<=191.957b-0.621
将上述公式作为条件,可以大致提取疑似火焰部分
效果图:
#代码
|
参考文献
[1]耿庆田,于繁华,赵宏伟,王闯.基于颜色特征的火焰检测新算法[J].吉林大学学报(工学版),2014,44(06):1787-1792.
实习编辑:贾婧媛
稿件来源:深度学习与文旅应用实验室(DLETA)
本文分享自微信公众号 - 算法与编程之美(algo_coding)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。