往往会先通过通过传统的方式去提取火焰特征,然后通过这些特征去构建特征向量(比如光流法提取火焰特征向量),再代入特征向量到分类器中训练。同时,有人也会构建级联分类器,就是多个分类器之间采用投票的机制,预测类别多数获胜。
基于卷积神经网络的火焰检测相对于传统方式而言,对火焰有着更高的精确率与召回率。可以大大的降低系统的误报率。这也是我现在所研究的一个重点方向。对于深度学习的重点可能会在改善现有的网络结构,改进loss…可能一个新的想法就可以让你创造一个新传奇。
由于时间有限,在这会主讲基于颜色空间的传统方式及深度学习方式。还有日后我研一论文的实现细节,现在暂时不做叙述。关注我别迷失哦
论文链接:https://www.academia.edu/download/45821410/1089.pdf
1、公式介绍
2、公式代码
def BGRToYCbCr(image):
"""
颜色空间转换
:param image: 图像
:return:
"""
image_B, image_G, image_R = cv2.split(image)
y = np.array(0.2568 * image_R + 0.5041 * image_G + 0.0979 * image_B, dtype=np.uint8) + 16
cb = np.array(-0.1482 * image_R - 0.2910 * image_G + 0.4392 * image_B, dtype=np.uint8) + 128
cr = np.array(0.4392 * image_R - 0.3678 * image_G - 0.0714 * image_B, dtype=np.uint8) + 128
return y, cb, cr
3、检测代码
def detectFireByYCbCr(Y, Cb, Cr, Y_decay=1.15, Cb_decay=0.75, Cr_decay=1.15, threshold=40):
"""
通过YCbCr颜色空间进行火焰识别,为Y, Cb, Cr添加对应的权值衰减
"""
rows, cols = Y.shape
# 像素的个数
numPixs = rows * cols
zeros = np.zeros((rows, cols))
ones = np.ones((rows, cols))
# 等式3
YgtCb = np.where(Y > Cb, ones, zeros)
# 等式4
CrgtCb = np.where(Cr > Cb, ones, zeros)
# 等式5
Y_mean = cv2.integral(Y)[-1, -1] / numPixs * Y_decay
Cb_mean = cv2.integral(Cb)[-1, -1] / numPixs * Cb_decay
Cr_mean = cv2.integral(Cr)[-1, -1] / numPixs * Cr_decay
F = np.where(Y > Y_mean, np.where(Cb < Cb_mean, np.where(Cr > Cr_mean, ones, zeros), zeros), zeros)
# 等式6
Ft = np.where(np.abs(Cb - Cr) > threshold, ones, zeros)
return YgtCb * CrgtCb * F * Ft
def BGR2HSI(image):
if np.max(image) > 1:
center = image / 255.0
B = image[:, :, 0]
G = image[:, :, 1]
R = image[:, :, 2]
theta = np.arccos((((R - B) + (R - G)) / (2 * np.sqrt(np.abs((R - G) ** 2 + (R - B) * (G - B))))))
H = np.where(G >= B, theta, 2 * np.pi - theta) / (2 * np.pi) * 360
S = (1 - (3 * (np.min(center, axis=2)) / (np.sum(center, axis=2) + 1e-9))) * 255
I = np.sum(center, axis=2) / 3 * 255
return H, S, I
3、阈值选取
H_min, H_max = 0, 60 # 0~360
S_min, S_max = 30, 180 # 0~255
I_min, I_max = 105, 255 # 0~255
4、检测效果
图片缩放的太小了,检测后的边缘有点看不清(可能是图片选取不当)。从图片上基本可以看出HSI判据对检测火焰边缘比较好。另外你们可以参考这篇博客:https://blog.csdn.net/qq_27569955/article/details/51531460
5、对HSI方法的改进
以后说…