【圖像識別】基于計(jì)算機(jī)視覺實(shí)現(xiàn)自動報(bào)靶系統(tǒng)(重彈孔)含Matlab源碼
1 簡介
第一步:靶圖像預(yù)處理
通過采集系統(tǒng)我們得到射擊后的靶圖像,即:模擬圖像。還必須將模擬圖像轉(zhuǎn)化為數(shù)字圖像,然后進(jìn)行一系列的圖像預(yù)處理,圖像預(yù)處理是進(jìn)行的各種圖像校正、圖像濾波除噪聲等處理環(huán)節(jié)。
報(bào)靶系統(tǒng)采用的圖像格式這里為JPG格式,之后轉(zhuǎn)化成灰度圖象。
(1)圖像濾波,初步消除噪聲
本系統(tǒng)采用二維中值濾波,中值濾波的主要功能就是讓與周圍像素灰度值的差比較大的像素改取與周圍像素接近的值,從而可以消除孤立的噪聲點(diǎn),由于不是簡單的取均值,產(chǎn)生的模糊比較少。中值濾波對于消除孤立點(diǎn)和線段的干擾將十分有用。
(2)圖像減影,初步把彈孔分割
將前后捕獲到的兩幅靶圖像對應(yīng)坐標(biāo)的像素灰度值相減,得到的各點(diǎn)灰度差值組成新的結(jié)果圖像。兩個原圖像中的所有相同背景由于灰度值相同,相減結(jié)果為0,在這個結(jié)果圖像里面就是統(tǒng)一的暗區(qū)域。而結(jié)果圖像中的亮區(qū)域是射擊在后靶圖像上造成的新彈點(diǎn)和前靶圖像上沒有彈點(diǎn)的對應(yīng)區(qū)域灰度值相減形成的。這個亮區(qū)域就是我們要提取的對象物,它代表一個新的彈點(diǎn)。減影處理還有一個好處是:排除掉了新的靶圖像中那些原先已經(jīng)存在的舊彈點(diǎn)對彈點(diǎn)識別的干擾。
(3) 靶圖像二值化,完成彈孔的分割與檢測
選取一個合適的閾值進(jìn)行二值化,來將彈點(diǎn)分割出來,使圖像二值化后能較完整地保持彈點(diǎn)的幾何形狀,以便能將對彈點(diǎn)的識別精度提到最高
(4)彈孔的噪聲濾除
這一步操作是為了消除彈孔周圍的裂縫,同時減影操作也會對彈孔增加一些噪聲點(diǎn),如果不加處理直接進(jìn)行彈點(diǎn)坐標(biāo)提取則可能會誤判(丟失或增加)一些彈點(diǎn)象素,使判靶精度受到影響。為保證獲得完整準(zhǔn)確的彈點(diǎn)圖像還必須對減影圖進(jìn)一步除噪處理。方法是用數(shù)學(xué)形態(tài)學(xué)中的腐蝕、膨脹算法。
先用閉合操作,填平輪廓的缺口,即對二值化后的圖像進(jìn)行膨脹操作后再用腐蝕復(fù)原。再開操作,也可去除輪廓上突出的毛刺,即對二值化后的圖像進(jìn)行腐蝕操作后再用膨脹復(fù)原。
(5)圖像目標(biāo)矯正。
經(jīng)過上述的操作,我們得到的靶圖像是存在畸變的,減影后二值化的圖像的畸變還
沒有恢復(fù),為了準(zhǔn)確提取彈孔坐標(biāo),必須對其進(jìn)行校正。
射擊過程中靶圖像出現(xiàn)幾何失真的類型主要為:傾斜投影畸變。用來采集靶圖像的攝像頭所處的位置使攝像頭不可能和靶平面保持絕對垂直的投影關(guān)系,攝像頭以一定的傾斜角度拍攝到的靶圖像就會不可避免的出現(xiàn)畸變。
一般用坐標(biāo)變換的幾何矯正方法。二次影射變換式來進(jìn)行幾何校正。該式如下:
?

決定坐標(biāo)變換式的關(guān)鍵是其中系數(shù)的確定。為了確定系數(shù),必須知道所給定靶圖像上的觀測基準(zhǔn)點(diǎn)應(yīng)該在無畸變坐標(biāo)系的什么地方,畸變的靶圖像和無畸變靶圖像中選擇4對基準(zhǔn)點(diǎn)與其對應(yīng),對最佳基準(zhǔn)點(diǎn)的選擇我們采用最小二乘法可以求出。由于時間原因,我們用的圖像都是已經(jīng)矯正過的。
第二步,彈孔識別
彈點(diǎn)識別的任務(wù)就是將數(shù)組內(nèi)存放的干擾區(qū)域排除,將真實(shí)的彈孔區(qū)域識別出來。這里用基于模板匹配方法的基本原理,事先求出標(biāo)準(zhǔn)彈點(diǎn)和干擾點(diǎn)的特征向量,然后和每一個未知點(diǎn)的特征向量比較,最接近標(biāo)準(zhǔn)差的就是彈點(diǎn)。由于二值化后的特征點(diǎn)比較簡單,而且實(shí)際采樣沒有太大的變形,特征向量也比較穩(wěn)定,所以該方法適合彈點(diǎn)的識別。
第三步,彈點(diǎn)環(huán)值判定
判定彈點(diǎn)環(huán)值實(shí)質(zhì)是判定彈點(diǎn)在胸環(huán)靶中所處的區(qū)域,知道每個區(qū)域所對應(yīng)的環(huán)數(shù)也就知道了該區(qū)域內(nèi)彈點(diǎn)的環(huán)值。
(1)?靶心與圓的半徑計(jì)算
首先要確定靶心坐標(biāo)和各圓環(huán)半徑。這里用Hough變換。Hough變換可應(yīng)用于檢測圖像空間的解析曲線,
求圓心步驟:①對標(biāo)準(zhǔn)胸環(huán)靶二值化②基于Hough法檢測圓心坐標(biāo)X(a,b),同時檢測到每個相鄰靶環(huán)的間隔距離r。
(2)?彈點(diǎn)環(huán)值判定
在第二步中彈點(diǎn)的坐標(biāo)確定了,設(shè)為D(x0,y0),求出彈點(diǎn)距圓心的距離d,彈點(diǎn)的環(huán)值為:

由于軍用靶只有五個環(huán),故或者寫個5次循環(huán)的代碼,就很好計(jì)算出環(huán)值,具體見程序中。
由于時間原因,只實(shí)現(xiàn)了簡單的報(bào)靶系統(tǒng),系統(tǒng)中假設(shè)圖像已經(jīng)做了矯正。
2 部分代碼
function varargout = shoot_system(varargin)
% SHOOT_SYSTEM M-file for shoot_system.fig
%軍用報(bào)靶系統(tǒng)主函數(shù)1
gui_Singleton = 1;
gui_State = struct('gui_Name', ? ? ? mfilename, ...
? ? ? ? ? ? ? ? ? 'gui_Singleton', ?gui_Singleton, ...
? ? ? ? ? ? ? ? ? 'gui_OpeningFcn', @shoot_system_OpeningFcn, ...
? ? ? ? ? ? ? ? ? 'gui_OutputFcn', ?@shoot_system_OutputFcn, ...
? ? ? ? ? ? ? ? ? 'gui_LayoutFcn', ?[] , ...
? ? ? ? ? ? ? ? ? 'gui_Callback', ? []);
if nargin && ischar(varargin{1})
? ?gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
? ?[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
? ?gui_mainfcn(gui_State, varargin{:});
end
function shoot_system_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
% ---輸出返回到命令行.
function varargout = shoot_system_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
% --- ?載入圖像,這張靶圖像沒有彈點(diǎn)痕跡
function pushbutton1_Callback(hObject, eventdata, handles)
? ? if(distance-i*lamda>0)
? ? ? ? continue;
? ? else
? ? ? ? ba=10-i+1;
? ? ? ? break;
? ? end
end
all_ba(j)=ba;
end
result=num2str(all_ba);
set(handles.edit1,'string',result);
function edit1_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
? ?set(hObject,'BackgroundColor','white');
end
% 關(guān)閉系統(tǒng)
function pushbutton6_Callback(hObject, eventdata, handles)
close(gcf);
3 仿真結(jié)果

4 參考文獻(xiàn)
[1]袁莉茹. 基于圖像處理的軍用自動報(bào)靶系統(tǒng)彈孔識別[D]. 重慶大學(xué).
博主簡介:擅長智能優(yōu)化算法、神經(jīng)網(wǎng)絡(luò)預(yù)測、信號處理、元胞自動機(jī)、圖像處理、路徑規(guī)劃、無人機(jī)等多種領(lǐng)域的Matlab仿真,相關(guān)matlab代碼問題可私信交流。
部分理論引用網(wǎng)絡(luò)文獻(xiàn),若有侵權(quán)聯(lián)系博主刪除。
