資源簡介
單目測距是利用一個攝像頭進行視頻拍攝,在圖像中找到待測物體。這一系列動作,涉及到了物體的識別,相機的結構,坐標變換的一些知識,距離的獲取是一個很廣泛的課題,用攝像頭來測距是其中一個方向,包括單目測距、雙目測距、結構光測距等方法。
代碼片段和文件信息
clear;clc;close?all
%處理第一張圖片(對應距離為D)
I=imread(‘20180409-204942-278.jpg‘);?????????%讀入圖片
figure
subplot(231);
imshow(I);
title(‘原圖‘);???
I=rgb2gray(I);?????????????%將RGB圖轉換成灰度圖
subplot(232);
imshow(I);
title(‘灰度圖‘);
[mn]=size(I);
for?K=1:10??????????????
????I2=wiener2(I[3?3]);???%濾波10次,把多余的點濾去。
end
I=edge(I‘sobel‘);?????????%集中邊緣檢測算子sobel、canny、log、roberts、prewitt。在此處sobel算子效果最好
subplot(233);
imshow(I);
title(‘邊緣提取圖‘);
for?i=1:m??????????????????%y??????
????for?j=1:n??????????????%x
????????if???i<280?||?i>340||?j<430||?j>490?
???????????I(ij)=0;
????????end
????end
end
subplot(234);
imshow(I);
title(‘目標物提取圖‘);
???????????????????????????%形態學處理,填充輪廓內像素
SE=strel(‘diamond‘2);?????%?strel在操作結構元素應用,用于膨脹腐蝕及開閉運算等操作的結構元素對象
???????????????????????????%具體用法:SE?=?strel(shapeparameters)
???????????????????????????%創建由指定形狀shape對應的結構元素。%參數parameters一般控制SE的大小。
I2=imdilate(ISE);?????????%imdilate對圖像實現膨脹操作。
???????????????????????????%IM2?=?imdilate(IMSE)膨脹灰度,二值,壓縮二值圖像IM,返回IM2。
???????????????????????????%參數SE為由strel函數返回的結構元素或者結構元素對象組。
I2=imfill(I2‘holes‘);?????%該函數用于填充二值圖像中的空洞區域。?如,?黑色的背景上有個白色的圓圈。?則這個圓圈內區域將被填充。
subplot(235);
imshow(I2);
title(‘填充圖‘);
sum1=0;
for?i=1:m??????????????????%計算白像素的個數,即為圖形面積
????for?j=1:n
????????if?I(ij)==1;
????????????sum1=sum1+1;
????????end
????end
end
fprintf(‘在距離為D時目標物的圖形面積(像素點個數)s1=%f\n‘sum1);
%處理第二張圖片(對應距離為D+d)
I=imread(‘20180409-205011-792.jpg‘);????%讀入圖片
figure
subplot(231);
imshow(I);
title(‘原圖‘);
I=rgb2gray(I);??????
- 上一篇:matlab計算圖像銳度
- 下一篇:5點3次加權濾波的程序和數據
評論
共有 條評論