一、針對影象的火災識別初步的探索
1、複習之前看過的一篇火災識別的**,裡面介紹了較為基礎rgb+his模式的影象識別方法,本次進行出發點也是基於此篇**,並且很幸運找到了相關的**來進行學習。
2、具體的操作方法:將原影象進行rgb三通道分離,去取各個通道畫素的值,根據實驗得出的經驗,對火災畫素定規則,規定各個分量之間的關係;
(其中飽和度加入是為了去除背景亮度帶來的影響,飽和度的值和rgb存在對映的關係。)根據這個規則對輸入影象進行判斷,建立乙個新的影象,符合就在這個新的影象中儲存火災畫素的位置,否則不儲存(如圖所示);將建立的二值影象進行檢測輪廓,根據輪廓組數進行火災識別框的繪製,最後輸出結果影象。
3、識別效果圖:
4、備註:
(1)此過程我是基於vs2013,以及opencv2.4.9版本實現的。其中需要注意的是opencv分離顏色三通道時順序是b、g、r而不是r、g、b。
(2)遍歷rgb影象採用的是at<>遍歷方法,此方法實現讀取矩陣中的畫素,或者對畫素進行賦值操作。通過此方法以及上述的公式規則完成rgb影象轉換成火災畫素二值影象。
(3)rgb和灰度影象中的排列:
(4)將轉換的二值影象進行下一步繪製處理,在進行輪廓檢索時使用的是findcontours()函式來尋找輪廓。此函式的定義為:
findcontours( inputoutputarray image, outputarrayofarrayscontours, int mode, int method, pointoffset=point());
image:輸入影象,8位的單通道二值影象,非零的畫素會被認成1
contour(外形輪廓):檢測到的輪廓。是乙個向量,響亮的每個元素都是輪廓因此,這個向量的每個元素仍是乙個向量。即
vector> contours;
其中mode表示輪廓檢測方法,對應的有四種方法。
—cv_retr_external:只檢測外輪廓。忽略輪廓內部的洞。(火災識別採用的輪廓檢測方法;)
—cv_retr_list:檢測所有輪廓,但不建立繼承(包含)關係。
—cv_retr_tree:檢測所有輪廓,並且建立所有的繼承(包含)關係。一張圖來解釋有何不同
(5)對二值影象查詢輪廓之後,對輪廓進行建立垂直矩陣。首先就是對影象進行遍歷,這裡採用的遍歷方法是:迭代法。在迭代法中,我們所需要的僅僅是獲得begin和end,然後增加迭代直至從begin到end。將*操作符新增在迭代指標前,即可訪問當前指向的內容。
boundingrect()函式是計算輪廓的垂直邊界最小矩形,矩形是與影象上下邊界平行的,其中函式內的引數只能是二維點集,點的序列或向量。
沒有來的火災
昨天早上,起來之後,突然聞到了一股焦味。開啟門一看,一大股的煙瀰漫在走道中。不一會兒,網斷了,然後電也斷了。後來,大家都跑出了寢室了,到了樓下。才知道是配電室 了。一樓配電室那個地方,煙霧遮掩了視線,什麼都看不到。人基本難以過去,我們都是繞另外一條路下去的。到今天,電才來。聽說是樓管撲滅了火.他說有...
森林火災模擬
森林火災模擬 import numpy as np import matplotlib.pyplot as plt import random import copy class forest def init self self.forest size 100 100 self.forest np...
從2023年消防火災資料看電氣火災隱患治理策略
2021年2月1日,急管理部消防救援局發布2020年全國火災資料。其中全年因違反電氣安裝使用規定引發的火災共8.5萬起,佔總火災數的33.6 因目前還有1萬 災原因尚未查明,預計後續該比重還將提高 其中,因電氣引發的較大火災36起,佔總數的55.4 從電氣火災的分類看,因短路 過負荷 接觸不良等線路...