本發明屬于儀表指針讀數技術領域,具體涉及一種儀表指針刻度值計算方法。
背景技術:
對于一些行業的儀表,特別是準確度比較高的儀表的檢驗要求檢定人員在每個需要檢定的刻度上通過比較指針表的實際讀數與標準電源的輸出,之間的差異來分析被檢定儀表的性能。然而由于人眼的分辨能力有限,當指針位于兩刻度線之間時,只能粗略估計指針的位置,不能準確讀取儀表的示數,這將直接影響了檢定的準確程度。再者人的眼睛在大量的視覺工作之后會出現視覺疲勞,在檢驗測試工作中會出現疏忽和差錯,若能及時發現改正這些差錯,則要增加了重復勞動。如果不能及時發現,則有可能帶來嚴重的后果。采用人工方式工作費時間、勞動強度大、檢定效率低、檢定誤差大、可靠性差。針對人工方式檢定的缺點,盡快研制出能夠快速、準確、穩定的全自動指針式儀表檢測系統,將對我國的儀表生產和檢定起到巨大的推動作用。
技術實現要素:
本發明針對現有技術的缺陷和不足,提供一種儀表指針刻度值計算方法。
本發明采用的技術方案如下:
一種儀表指針位置精確檢測方法,其特征在于,包括以下步驟:
1)、建立背景圖:對指針處于每一個刻度時的所有圖像逐像素分析亮度,將排序位置在中間的亮度值作為背景圖中對應像素位置的亮度值,進而建立背景圖;
在對指針進行自動檢測時,儀表和相機的位置,都是靜止的,儀表上的刻度盤、數字、圖標等,都是靜止不動的;但是在進行檢測時,指針是運動的;可以利用這個特性,提高指針檢測的效果;因此在檢測之前,需要建立背景圖,用于后續利用圖像差提取指針,背景圖的具體制作流程如下:
1.1)、改變指針的位置,拍攝指針處于表盤所有刻度位置的圖像,表盤總共17個刻度,因此總共拍攝17張圖像,拍攝過程中要保證相機的絕對靜止;
1.2)、對指針處于表盤所有刻度位置的圖像進行綜合分析,建立背景圖;
通過分析每張圖像中指針像素位置對應的亮度值,并進行排序,將排序位置在中間的亮度值作為背景圖中指針像素位置的亮度值,這里對17張圖像進行分析;
2)、從背景圖中選擇儀表圓盤模板圖,通過當前圖和儀表刻度盤模板圖的匹配,實現當前圖的定位;
在系統的使用過程中,相機發生移動是很常見的現象,為了保證后續步驟,能夠正確的執行圖像減法的操作,需要先完成圖像的定位,具體過程如下:
2.1)、模板圖和當前圖中心圓盤的外輪廓圓擬合;
2.2)、圖像平移,使得圓心對齊;
2.3)、圖像縮放,使得當前圖圓盤半徑與模板圖半徑一致;
2.4)、模板圖和當前圖中心圓盤底部直線提取,直線方向計算;
2.5)、圖像旋轉,使得當前圖圓盤底部直線方向與模板圖一致;
3)、在模板圖中對指針像素進行色彩訓練,并進行色彩訓練結果的驗證;
為了提高指針提取的質量,需要在模板圖上,結合人工的方法,提取獲取到指針色彩的大致范圍,這個步驟稱為“色彩訓練”,具體步驟如下:
3.1)、選定模板圖中指針的范圍;
人工利用鼠標在模板圖上為指針圈定一個范圍;
3.2)、自動提取顏色分布;
由于指針上色彩分布并不是單一的,建立單一高斯模型,并不能準確地描述顏色分布,因此需要為指針區域的顏色分布建立三個高斯模型,采用hsv色彩空間對顏色分布進行建模,對指針范圍內的所有彩色像素的hsv值進行統計分析和聚類,得到每個高斯模型的均值和方差;
3.3)、展示指針自動提取效果;
利用三個高斯模型,對模板圖上的指針進行檢測,計算每個像素屬于三個模型的最高置信度,如果最高置信度高于0.2,則認為是指針像素,按照三種不同的顏色,來展示指針像素,每種顏色對應一個高斯模型;
3.4)、人工修補漏缺像素,增加新的高斯模型;
沒有被三個高斯模型囊括的指針像素,需要通過人工手動點擊的方式,將漏缺的像素囊括進來,新囊括進來的像素,繼續增加新的高斯模型,該過程一直持續,盡量囊括更多的指針像素,同時保證沒有非指針像素被吸收進來;
4)、將前圖像與背景圖比較初步確定指針像素,然后根據色彩訓練結果提取當前圖中的疑似指針像素;
背景圖中,存儲的都是儀表上靜止不動的元素;通過與背景圖比較分析,可以得到指針的候選像素;當然,此時的結果中,還包含一些其他變動的要素,比如變動的數字,變動的刻度條,或者變動的圖標,等等,但是經過該步驟,已經極大縮小了指針的潛在位置的范圍,具體流程如下:
4.1)、遍歷當前圖像中的每個像素,計算其屬于色彩高斯模型的最高的置信度;
4.2)、置信度高于0.2,作為指針像素提取出來;
4.3)、中值濾波,過濾掉孤立的噪聲點;
5)、對疑似指針像素進行連通域提取、拼接、尺寸和形狀分析處理,確定指針區域;
對步驟4中得到的指針候選像素結果圖進行進一步的分析,以過濾掉噪聲的干擾,具體步驟如下:
5.1)、連通域提取和輪廓提取;
5.2)、近距離連通域的拼接;
由于相機實際拍攝效果的影響,步驟4中提取出來的指針像素,很可能是斷裂的,指針有可能被分成了多個部分,此時需要對所有的連通域輪廓進行分析,計算其最近距離,最近距離小于5個像素的連通域,需要拼接成一個整體;
5.3)、過濾小尺寸連通域:計算連通域的外接矩形,外接矩形的寬和高都小于50個像素的連通域,需要過濾掉,它們不可能是指針區域;
5.4)、連通域形狀分析,過濾掉明顯不符的連通域:步驟4中的指針像素形成的連通域,即便受到背景像素的影響,或者在拼接之后,依然存在斷裂現象,其外形也接近矩形;計算連通域輪廓的最小外接矩形,然后計算其矩形度,矩形度小于0.6的連通域,直接過濾;
6)、當前圖像中指針邊緣提取;
在檢測指針兩側的直線之前,需要提前計算圖像中的邊緣,后續步驟在邊緣圖的基礎之上,進一步進行直線擬合,具體步驟如下:
6.1)、在當前彩色圖中利用canny算子提取邊緣圖;
6.2)、利用步驟5的結果生成掩模圖;
將步驟5過濾后剩下來的連通域,繪制在新的圖像中,形成黑白二值化圖像,用來作為掩模圖,掩模圖中的白色像素,表示需要被處理的像素;
6.3)、掩模圖膨脹
連通域提取時,其邊界很可能就是指針的邊界;為了防止指針邊緣被漏檢,需要對掩模圖進行膨脹,擴大每個連通域的范圍;
6.4)、掩模圖與邊緣圖求與
求與之后,僅有指針區域的邊緣圖得到保留,其余的背景區域或者非指針區域的邊緣都被過濾;
6.5)、邊緣子線段打斷
遍歷所有的邊緣點,分析其8鄰域中邊緣點的個數,如果邊緣點個數大于2,則是t型交叉點或者十字交叉點,需要打斷,去掉該邊緣點;
分析邊緣點的曲率,曲率超過閾值的,也需要打斷,去掉該邊緣點;
6.6)、邊緣形狀分析,過濾曲線
分析每一條邊緣的形狀,計算邊緣上所有邊緣點的重心,重心距離邊緣上點的最大距離超過10個像素的,認為是曲線,加以濾除,最終保留下來的,全部都是直線子線段;
7)、根據步驟6)提取的邊緣子線段,進行指針邊緣直線擬合;
在步驟6得到的曲線圖中,進行直線擬合,同時計算直線對應的方程;
8)、根據步驟7)得到的邊緣擬合直線計算指針中線方程;
指針的形狀通常并不是規則的矩形,而是呈現上小下大,或者上大下小的形狀,部分指針更是出現非規則形狀;但是,絕大部分的指針,都是左右對稱的,并且兩側都存在直線邊界,利用步驟7中得到的指針邊界直線擬合結果,可以得到指針的中線方程,具體流程如下:
8.1)、直線對搜索
指針兩側的直線,具有如下的特點:a)、到圓盤中心的距離小于30個像素;b)、兩側直線關于圓盤中心對稱;根據這兩個特點,遍歷圖像中所有的直線,就可以找到滿足這兩個特征的直線對,作為指針兩側的直線方程;
8.2)、直線對方程修正
由于邊緣在提取過程中,總會受到各種因素的干擾,導致直線方程出現偏斜,因此需要根據進行一定程度的修正,方法如下:a)、針對當前直線方程,搜索邊緣圖中,距離該直線較近的邊緣點;b)、在直線周邊,降低邊緣提取的參數值,擴充邊緣點數目;c)、將距離較近的邊緣點,重新進行直線擬合,作為新的修正后的直線方程;
8.3)、直線對交點計算:利用兩側直線方程,得到交點坐標;
8.4)、角平分線計算:利用兩側直線方程對應的角度,得到中線的角度,中線位于角平分線上;
8.5)、中線方程計算:利用交點和角度,得到中線直線方程;
8.6)、中線方程驗證:指針都是從圓盤的中心發出的,可以計算圓盤中心到指針中線的距離,距離大于5個像素,認為方程計算錯誤,進行預警;
9)、根據每個刻度線的中心點位置、對應的實際刻度值、以及指針的中線方程,計算指針的實際刻度值;具體流程如下:
9.1)、逐個遍歷刻度中心點,計算其位于指針中線的那一側:左側標記為正,右側標記為負;
9.2)、逐個遍歷相鄰的兩個刻度線,找到分別位于指針中線兩側的那一對刻度線a和b:圓盤上所有的刻度線,只有一對刻度,是分居在中線的兩側的,只需要找到符號不同的刻度對就行了;
9.3)、計算刻度線a和b到中線的距離;
9.4)、根據距離比和a、b的實際刻度值,計算出指針對應的實際刻度值:利用線性插值的方法,得到指針的真實刻度值。
本發明通過對當前圖像中的儀表指針的像素提取以及連通區域分析、邊緣提取、直線擬合、中線方程計算,實現了針對已知刻度值的刻度盤上的指針刻度值的快速計算,具有高效準確的特點,克服了人工讀數的不足;本發明將對儀表生產和檢定具有巨大的推動作用。
附圖說明
附圖用來提供對本發明的進一步理解,并且構成說明書的一部分,與本發明的實施例一起用于解釋本發明,并不構成對本發明的限制。
圖1為本發明的流程圖。
具體實施方式
一種儀表指針刻度值計算方法,其特征在于,包括以下步驟:
1)、建立背景圖:對指針處于每一個刻度時的所有圖像逐像素分析亮度,將排序位置在中間的亮度值作為背景圖中對應像素位置的亮度值,進而建立背景圖;
在對指針進行自動檢測時,儀表和相機的位置,都是靜止的,儀表上的刻度盤、數字、圖標等,都是靜止不動的;但是在進行檢測時,指針是運動的;可以利用這個特性,提高指針檢測的效果;因此在檢測之前,需要建立背景圖,用于后續利用圖像差提取指針,背景圖的具體制作流程如下:
1.1)、改變指針的位置,拍攝指針處于表盤所有刻度位置的圖像,表盤總共17個刻度,因此總共拍攝17張圖像,拍攝過程中要保證相機的絕對靜止;
1.2)、對指針處于表盤所有刻度位置的圖像進行綜合分析,建立背景圖;
通過分析每張圖像中指針像素位置對應的亮度值,并進行排序,將排序位置在中間的亮度值作為背景圖中指針像素位置的亮度值,這里對17張圖像進行分析;
2)、從背景圖中選擇儀表刻度盤模板圖,通過當前圖和儀表刻度盤模板圖的匹配,實現當前圖的定位;
在系統的使用過程中,相機發生移動是很常見的現象,為了保證后續步驟,能夠正確的執行圖像減法的操作,需要先完成圖像的定位,具體過程如下:
2.1)、模板圖和當前圖中心圓盤的外輪廓圓擬合;
2.2)、圖像平移,使得圓心對齊;
2.3)、圖像縮放,使得當前圖圓盤半徑與模板圖半徑一致;
2.4)、模板圖和當前圖中心圓盤底部直線提取,直線方向計算;
2.5)、圖像旋轉,使得當前圖圓盤底部直線方向與模板圖一致;
3)、在模板圖中對指針像素進行色彩訓練,并進行色彩訓練結果的驗證;
為了提高指針提取的質量,需要在模板圖上,結合人工的方法,提取獲取到指針色彩的大致范圍,這個步驟稱為“色彩訓練”,具體步驟如下:
3.1)、選定模板圖中指針的范圍;
人工利用鼠標在模板圖上為指針圈定一個范圍;
3.2)、自動提取顏色分布;
由于指針上色彩分布并不是單一的,建立單一高斯模型,并不能準確地描述顏色分布,因此需要為指針區域的顏色分布建立三個高斯模型,采用hsv色彩空間對顏色分布進行建模,對指針范圍內的所有彩色像素的hsv值進行統計分析和聚類,得到每個高斯模型的均值和方差;
3.3)、展示指針自動提取效果;
利用三個高斯模型,對模板圖上的指針進行檢測,計算每個像素屬于三個模型的最高置信度,如果最高置信度高于0.2,則認為是指針像素,按照三種不同的顏色,來展示指針像素,每種顏色對應一個高斯模型;
3.4)、人工修補漏缺像素,增加新的高斯模型;
沒有被三個高斯模型囊括的指針像素,需要通過人工手動點擊的方式,將漏缺的像素囊括進來,新囊括進來的像素,繼續增加新的高斯模型,該過程一直持續,盡量囊括更多的指針像素,同時保證沒有非指針像素被吸收進來;
4)、將前圖像與背景圖比較初步確定指針像素,然后根據色彩訓練結果提取當前圖中的疑似指針像素;
背景圖中,存儲的都是儀表上靜止不動的元素;通過與背景圖比較分析,可以得到指針的候選像素;當然,此時的結果中,還包含一些其他變動的要素,比如變動的數字,變動的刻度條,或者變動的圖標,等等,但是經過該步驟,已經極大縮小了指針的潛在位置的范圍,具體流程如下:
4.1)、遍歷當前圖像中的每個像素,計算其屬于色彩高斯模型的最高的置信度;
4.2)、置信度高于0.2,作為指針像素提取出來;
4.3)、中值濾波,過濾掉孤立的噪聲點;
5)、對疑似指針像素進行連通域提取、拼接、尺寸和形狀分析處理,確定指針區域;
對步驟4中得到的指針候選像素結果圖進行進一步的分析,以過濾掉噪聲的干擾,具體步驟如下:
5.1)、連通域提取和輪廓提取;
5.2)、近距離連通域的拼接;
由于相機實際拍攝效果的影響,步驟4中提取出來的指針像素,很可能是斷裂的,指針有可能被分成了多個部分,此時需要對所有的連通域輪廓進行分析,計算其最近距離,最近距離小于5個像素的連通域,需要拼接成一個整體;
5.3)、過濾小尺寸連通域:計算連通域的外接矩形,外接矩形的寬和高都小于50個像素的連通域,需要過濾掉,它們不可能是指針區域;
5.4)、連通域形狀分析,過濾掉明顯不符的連通域:步驟4中的指針像素形成的連通域,即便受到背景像素的影響,或者在拼接之后,依然存在斷裂現象,其外形也接近矩形;計算連通域輪廓的最小外接矩形,然后計算其矩形度,矩形度小于0.6的連通域,直接過濾;
6)、當前圖像中指針邊緣提取;
在檢測指針兩側的直線之前,需要提前計算圖像中的邊緣,后續步驟在邊緣圖的基礎之上,進一步進行直線擬合,具體步驟如下:
6.1)、在當前彩色圖中利用canny算子提取邊緣圖;
6.2)、利用步驟5的結果生成掩模圖;
將步驟5過濾后剩下來的連通域,繪制在新的圖像中,形成黑白二值化圖像,用來作為掩模圖,掩模圖中的白色像素,表示需要被處理的像素;
6.3)、掩模圖膨脹
連通域提取時,其邊界很可能就是指針的邊界;為了防止指針邊緣被漏檢,需要對掩模圖進行膨脹,擴大每個連通域的范圍;
6.4)、掩模圖與邊緣圖求與
求與之后,僅有指針區域的邊緣圖得到保留,其余的背景區域或者非指針區域的邊緣都被過濾;
6.5)、邊緣子線段打斷
遍歷所有的邊緣點,分析其8鄰域中邊緣點的個數,如果邊緣點個數大于2,則是t型交叉點或者十字交叉點,需要打斷,去掉該邊緣點;
分析邊緣點的曲率,曲率超過閾值的,也需要打斷,去掉該邊緣點;
6.6)、邊緣形狀分析,過濾曲線
分析每一條邊緣的形狀,計算邊緣上所有邊緣點的重心,重心距離邊緣上點的最大距離超過10個像素的,認為是曲線,加以濾除,最終保留下來的,全部都是直線子線段;
7)、根據步驟6)提取的邊緣子線段,進行指針邊緣直線擬合;
在步驟6得到的曲線圖中,進行直線擬合,同時計算直線對應的方程;
8)、根據步驟7)得到的邊緣擬合直線計算指針中線方程;
指針的形狀通常并不是規則的矩形,而是呈現上小下大,或者上大下小的形狀,部分指針更是出現非規則形狀;但是,絕大部分的指針,都是左右對稱的,并且兩側都存在直線邊界,利用步驟7中得到的指針邊界直線擬合結果,可以得到指針的中線方程,具體流程如下:
8.1)、直線對搜索
指針兩側的直線,具有如下的特點:a)、到圓盤中心的距離小于30個像素;b)、兩側直線關于圓盤中心對稱;根據這兩個特點,遍歷圖像中所有的直線,就可以找到滿足這兩個特征的直線對,作為指針兩側的直線方程;
8.2)、直線對方程修正
由于邊緣在提取過程中,總會受到各種因素的干擾,導致直線方程出現偏斜,因此需要根據進行一定程度的修正,方法如下:a)、針對當前直線方程,搜索邊緣圖中,距離該直線較近的邊緣點;b)、在直線周邊,降低邊緣提取的參數值,擴充邊緣點數目;c)、將距離較近的邊緣點,重新進行直線擬合,作為新的修正后的直線方程;
8.3)、直線對交點計算:利用兩側直線方程,得到交點坐標;
8.4)、角平分線計算:利用兩側直線方程對應的角度,得到中線的角度,中線位于角平分線上;
8.5)、中線方程計算:利用交點和角度,得到中線直線方程;
8.6)、中線方程驗證:指針都是從圓盤的中心發出的,可以計算圓盤中心到指針中線的距離,距離大于5個像素,認為方程計算錯誤,進行預警;
9)、根據每個刻度線的中心點位置、對應的實際刻度值、以及指針的中線方程,計算指針的實際刻度值;具體流程如下:
9.1)、逐個遍歷刻度中心點,計算其位于指針中線的那一側:左側標記為正,右側標記為負;
9.2)、逐個遍歷相鄰的兩個刻度線,找到分別位于指針中線兩側的那一對刻度線a和b:圓盤上所有的刻度線,只有一對刻度,是分居在中線的兩側的,只需要找到符號不同的刻度對就行了;
9.3)、計算刻度線a和b到中線的距離;
9.4)、根據距離比和a、b的實際刻度值,計算出指針對應的實際刻度值:利用線性插值的方法,得到指針的真實刻度值。
以上所述僅為本發明的優選實施例而已,并不用于限制本發明,盡管參照前述實施例對本發明進行了詳細的說明,對于本領域的技術人員來說,其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換;凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。