數字圖像處理Matlab實驗——儀器表盤識別
1. 實驗背景
指針式機械表盤具有安裝維護方便、結構簡單、防電磁干擾等諸多優點, 目前廣泛應用于工礦企業、能源及計量等部門。隨著儀表數量的增加及精密儀表技術的發展,人工判讀已經不能滿足實際應用需求。隨著計算機技術和圖像處理技術的不斷發展,指針式機械表自動讀表技術應運而生。該技術提高了表盤識別的自動化程度及實時性,將代替傳統工業儀表的讀取方式得到廣泛應用。
2. 實驗目的
(1)了解機械式表盤自動讀表技術的基本原理。
(2)了解儀器表盤識別技術的基本方法和相關算法。
(3)學會利用MATLAB實現對圖像的邊緣檢測、圖像邊緣銳化、二值化處理、Hough變換等圖像處理技術。
3. 實驗原理
根據機械式表盤的圖像特征,采用圖像邊緣點法線方向計數累加的圓心定位方法及過定點的直線檢測算法,達到表盤識別的目標。儀表刻度檢測流程如下: 攝像頭采集表盤圖像,送入計算機進行預處理及邊緣檢測操作;計算機檢測出表盤回轉中心及半徑,并定位出表盤的有效顯示區域;在此區域內,利用過定點( 回轉中心)的Hough 直線變換,基于特征點對應角度的峰值搜索算法識別出指針中心線,從而輸出檢測結果。
參考資料:
《數字圖像處理》(第三版) 岡薩雷斯 電子工業出版社
《數字圖像處理的MATLAB實現》(第二版) 岡薩雷斯 清華大學出版社
《MATLAB數字圖像處理》(第二版) 張德豐 機械工業出版社
參考文獻:陳繼華, 李勇, 田增國, & 李磊. (2015). 基于機器視覺的機械式表盤自動讀表技術的實現. 鄭州大學學報(工學版), 36(3), 101-105.
4. 實驗要求
(1)自選一副儀表圖片。讀入圖像,對圖像進行預處理及邊緣檢測操作。
(2)采用平滑濾波法對圖像進行處理,濾波的同時銳化圖像的邊緣。
(3)通過對讀入的儀表圖像進行處理,能清楚的識別表盤指針指數,且具有較準確的識別精度。
5.實驗報告要求
描述實驗的基本步驟,用數據和圖片給出各個步驟中取得的實驗結果,并進行必要的討論,必須包括原始圖像及其計算/處理后的圖像。
7. 實驗程序
RGB=imread('14.jpg');
figure,imshow(RGB); title('RGB')
GRAY=rgb2gray(RGB);
figure,imshow(GRAY); title('GRAY')
threshold=graythresh(GRAY);
BW=im2bw(GRAY,threshold);
figure,imshow(BW); title('BW')
BW=~BW;
figure,imshow(BW); title('~BW')
BW=bwmorph(BW,'thin',Inf);
figure,imshow(BW); title('BWMORPH')
[M,N]=size(BW);
[H,T,R] = hough(BW);
figure;
imshow(H,[],'XData',T,'YData',R,'InitialMagnification','fit');
xlabel('\theta'), ylabel('\rho');
axis on, axis normal, hold on;
P = houghpeaks(H,1,'threshold',ceil(0.3*max(H(:))));
x = T(P(:,2));
y = R(P(:,1));
plot(x,y,'s','color','white');
%%%%%%%%%%%%%%%%%%%% Find lines and plot them%%%%%%%%%%%%%%
lines = houghlines(BW,T,R,P,'FillGap',5,'MinLength',7);
hold on;
figure, imshow(RGB), hold on
max_len = 0;
for k = 1:length(lines)
xy = [lines(k).point1; lines(k).point2];
plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');
%%%%%%%%%% plot beginnings and ends of lines%%%%%%%%%%%%%%%%%%
plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow'); plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');
%%%% determine the endpoints of the longest line segment %%%%
len = norm(lines(k).point1 - lines(k).point2);
if ( len > max_len)
max_len = len;
xy_long = xy;
end
end
%%%%%%%%%%%%% highlight the longest line segment%%%%%%%%%%%%%%
plot(xy_long(:,1),xy_long(:,2),'LineWidth',2,'Color','cyan');
k=(xy(2,2)-xy(1,2))/(xy(2,1)-xy(1,1));
theta=pi/2+atan(k);
if((xy(1,1)+xy(2,1))/2<=N/2)
q=(theta+pi)*180/3.14;
else
q=theta*180/3.14;
end
shishu=q*6/2700-0.2;
disp (theta);
disp (q);
disp (shishu);
完整的Word格式文檔51黑下載地址:
數字圖像處理matlab實驗.docx
(17.18 KB, 下載次數: 54)
2019-1-5 23:01 上傳
點擊文件名下載附件
基于數字圖像處理的表盤指針dushu
|