① 如何用matlab提取棋盤格標定靶的角點
是caltech那個工具箱吧。有個函數叫rodrigues 直接用它就可以了。 R = rodrigues(om); 想轉回去還可以om = rodrigues(R)
② 左右圖像已經提取了harris角點了後,怎麼匹配
樓主,你已經得到了「左圖中的一些點和右圖中的一些點相匹配」,這就夠了,你的目的是「可以將匹配點一一對應起來」,這個思路就是不對的,因為兩幅圖是分別提取角點,由於雜訊、圖像質量等各種原因,兩幅圖中提取的角點並不存在完全的一一對應
③ 角點檢測的幾種基本方法
也稱為特徵點檢測。角點通常被定義為兩條邊的交點,更嚴格的說,角點的局部鄰域應該具有兩個不同區域的不同方向的邊界。而實際應用中,大多數所謂的角點檢測方法檢測的是擁有特定特徵的圖像點,而不僅僅是「角點」。這些特徵點在圖像中有具體的坐標,並具有某些數學特徵,如局部最大或最小灰度、某些梯度特徵等。現有的角點檢測演算法並不是都十分的魯棒。很多方法都要求有大量的訓練集和冗餘數據來防止或減少錯誤特徵的出現。角點檢測方法的一個很重要的評價標準是其對多幅圖像中相同或相似特徵的檢測能力,並且能夠應對光照變化、圖像旋轉等圖像變化。 Moravec角點檢測演算法Moravec角點檢測演算法是最早的角點檢測演算法之一。該演算法將角點定義為具有低「自相關性」的點。演算法會檢測圖像的每一個像素,將像素周邊的一個鄰域作為一個patch,並檢測這個patch和周圍其他patch的相關性。這種相關性通過兩個patch間的平方差之和(SSD)來衡量,SSD值越小則相似性越高。如果像素位於平滑圖像區域內,周圍的patch都會非常相似。如果像素在邊緣上,則周圍的patch在與邊緣正交的方向上會有很大差異,在與邊緣平行的方向上則較為相似。而如果像素是各個方向上都有變化的特徵點,則周圍所有的patch都不會很相似。Moravec會計算每個像素patch和周圍patch的SSD最小值作為強度值,取局部強度最大的點作為特徵點。 Harris角點檢測演算法Moravec角點檢測演算法有幾個很明顯的缺陷:1,強度值的計算並不是各向同性的,只有離散的8個45度角方向被考慮。因為patch的評議比較最多隻有8個方向;2,由於窗口是方形並且二元的,因此相應函數會有雜訊;3,對邊緣的相應太簡單,因為強度值盡取SSD的最小值; FAST角點檢測演算法Smith 和 Brady在1997年提出了一種完全不同的角點提取方法,即「SUSAN (Smallest UnivalueSegment AssimilatingNucleus)」提取運算元。SUSAN 提取運算元的基本原理是,與每一圖像點相關的局部區域具有相同的亮度。如果某一窗口區域內的每一像元亮度值與該窗口中心的像元亮度值相同或相似,這一窗口區域將被稱之為「USAN」。計算圖像每一像元的「USAN」,為我們提供了是否有邊緣的方法。位於邊緣上的像元的「USAN」較小,位於角點上的像元的「USAN」更小。因此,我們僅需尋找最小的「USAN」,就可確定角點。該方法由於不需要計算圖像灰度差,因此,具有很強的抗雜訊的能力。Edward Rosten and TomDrummond 在2006年提出了一種簡單快速的角點探測演算法,該演算法檢測的角點定義為在像素點的周圍鄰域內有足夠多的像素點與該點處於不同的區域。應用到灰度圖像中,即有足夠多的像素點的灰度值大於該點的灰度值或者小於該點的灰度值。考慮下圖中p點附近半徑為3的圓環上的16個點,一個思路是若其中有連續的12個點的灰度值與p點的灰度值差別超過某一閾值,則可以認為p點為角點。這一思路可以使用機器學習的方法進行加速。對同一類圖像,例如同一場景的圖像,可以在16個方向上進行訓練,得到一棵決策樹,從而在判定某一像素點是否為角點時,不再需要對所有方向進行檢測,而只需要按照決策樹指定的方向進行2-3次判定即可確定該點是否為角點。
④ 我想問下 用SIFT提取的特徵點 也就是關鍵點是些什麼點 這些點中有角點或者圓心么
第一個為題:SIFT演算法裡面把角點,邊緣點看做了不穩定的點,是需要去除的。所以提取不到角點;
匹配問題:只要找到了兩幅圖片的角點坐標,那麼對兩幅圖片進行拼接,對應點連線即可,這裡面也就涉及到一個坐標變換的問題。
⑤ 各位高手,matlab實現了兩幅圖像的角點檢測,怎樣實現角點匹配
角點匹配的話可以用描述子(比如sift)描述該點,給定一定閾值就可以匹配。 至於圖像拼接,你可以參考homography這部分的內容。
⑥ 怎樣利用CASS提取CAD方格網角點坐標及高程
我有CASS或CAD里提取點坐標及高程的插件,能夠批量提取
⑦ CAD批量提取 閉合的不規則圖形的角點坐標
我有CAD里批量提取點坐標的插件,並能夠導出到EXCEL表格里
⑧ 求圖像處理中角點檢測演算法FAST詳細步驟,急
演算法介紹:
1)通常情況下,可以將區域內的點分為3類,a.平坦的點,b.邊緣上的點,c.角點。
2)若對於這3類點分別求取Ix,Iy,很顯然,a類點的Ix和Iy都很小,b類點則是Ix和Iy有一個稍大一個稍小,而角點c則是兩個值都很大。所以根據這種性質,可以區分出角點來。
【
求解Ix,Iy的過程說明:
利用單方向上(橫軸&縱軸),點與周圍點的差分來計算,有兩種方法,
一是,取3x3鄰域計算,通常取
Ix子模板: Iy子模板:
-1 0 1 -1 -1 -1
-1 0 1 0 0 0
-1 0 1 1 1 1
先對圖像矩陣上每一點分別求取其Ix,Iy乘積後疊加的值,記為Ix(m,n),Iy(m,n).(其中,m,n分別為原矩陣的大小)
二是,直接只採用橫軸和縱軸上的點計算差分。
】
% fx = [-1 0 1;-1 0 1;-1 0 1]; % 高斯函數一階微分,x方向(用於改進的Harris角點提取演算法)
fx = [-2 -1 0 1 2]; % x方向梯度運算元(用於Harris角點提取演算法)
Ix = filter2(fx,ori_im); % x方向濾波
% fy = [-1 -1 -1;0 0 0;1 1 1]; % 高斯函數一階微分,y方向(用於改進的Harris角點提取演算法)
fy = [-2;-1;0;1;2]; % y方向梯度運算元(用於Harris角點提取演算法)
Iy = filter2(fy,ori_im); % y方向濾波
3)考慮到圖像一般情況下的雜訊影響,採用高斯濾波去除雜訊點。
Ix2 = Ix.^2;
Iy2 = Iy.^2;
Ixy = Ix.*Iy;
clear Ix;
clear Iy;
h= fspecial('gaussian',[7 7],2); % 產生7*7的高斯窗函數,sigma=2
Ix2 = filter2(h,Ix2);
Iy2 = filter2(h,Iy2);
Ixy = filter2(h,Ixy);
4)計算角點的准則函數R(即用一個值來判斷該點來衡量這個點是否是角點),並標記角點(R(i,j)>0.01*Rmax,且R(i,j)為3x3鄰域局部最大值)。
M = [Ix2(i,j) Ixy(i,j);Ixy(i,j) Iy2(i,j)];
R(i,j) = det(M)-k*(trace(M))^2; % 計算R
【可以通過改變准則函數的計算來改進harris演算法,上式中的k一般取0.04~0.06】
[height,width] = size(ori_im);
result = zeros(height,width); % 紀錄角點位置,角點處result的值為1
R = zeros(height,width);
Rmax = 0; % 圖像中最大的R值
for i = 1:height
for j = 1:width
M = [Ix2(i,j) Ixy(i,j);Ixy(i,j) Iy2(i,j)];
R(i,j) = det(M)-0.06*(trace(M))^2;
if R(i,j) > Rmax
Rmax = R(i,j);
end
end
end
cnt = 0; %角點個數
for i = 2:height-1
for j = 2:width-1
% 進行非極大抑制,窗口大小3*3
if R(i,j) > 0.01*Rmax && R(i,j) > R(i-1,j-1) && R(i,j) > R(i-1,j) && R(i,j) > R(i-1,j+1) && R(i,j) > R(i,j-1) && R(i,j) > R(i,j+1) && R(i,j) > R(i+1,j-1) && R(i,j) > R(i+1,j) && R(i,j) > R(i+1,j+1)
result(i,j) = 1;
cnt = cnt+1;
end
end
end
[posc, posr] = find(result == 1);
disp(cnt); % 顯示角點個數
imshow(ori_im);
hold on;
plot(posr,posc,'r+');
原圖來自http://zh.wikipedia.org/wiki/%E8%A7%92%E6%A3%80%E6%B5%8B
檢測後:
為了驗證harris運算元的旋轉不變性,將原圖旋轉30度,見下
關於角點檢測的其他演算法:
1).susan演算法
利用面積,如下:
如下圖所示為SUSAN圓形模板與物體的5種幾何位置關系,對於圖像中非紋理區域的任一點,在以它為中心的模板窗中存在一塊亮度與其相同的區域,這塊區域即為SUSAN的USAN區域。USAN區域包含了圖像結構的重要信息,
由圖可知,當模板中心像素點位於區域內部時,USAN的面積最大,
當該像素點位於區域邊界時,則面積為最大的一半,
當該像素點為角點時,USAN區域面積約為最大的1/4。
SUSAN根據不同位置時USAN區域的面積來考察當前像素點為區域內部點、邊緣點或角點。
值得注意的是,關於計算usan面積,在圓鄰域中,當像素點與某一點的灰度差小於某一閾值(通常取十分之一的極值(最大值-最小值))時,則認為該點在usan內。
2) CSS角點檢測
通過canny運算元計算出圖像的edge,然後對edge進行表示成:
Γ (u)=[X(u,δ),Y(u,δ)](x(u,δ)表示高斯濾波後的橫坐標,...)
對曲線上的點計算曲率,
選擇曲率局部極大值點作為候選值點,當點同時滿足下面兩個條件時,認為該點為角點:
a.大於閾值T;
b.至少大於兩側相鄰的點曲率極小值的兩倍。
【對於canny提取出的曲線的填補(曲線可能有斷裂),形成T型角點,若得出的角點與T型角點相鄰,去掉T型角點】
3)
還有諸多演算法,留待以後討論。
參考:http://walle.sdsmt.e/faculty/rhoover/teaching/F11/692/Papers/HarrisStephens.pdf
以及F. Mokhtarian and R. Suomela, Robust Image Corner Detection Trough Curvature Scale Space, TPAMI, Vol. 20, No. 12, 1998.