這是乙個來自網友的提問:
這是一張雷射,需要得到3橫3豎的交點,其中的圓和x是用了測試仿射變換的。
一、分析
大畫素、單通道。
二、思路分析
必須在量化的基礎上,尋找這9個焦點的「固有特徵」;至於9個點之間的排序,那是簡單問題。
三、演算法實踐
1、這樣乙個影象,單通道所以無法做hsv分解;必須考慮到光照影響,所以不能採用ostu;經驗告訴我,直接bin能夠得到較好效果。
2、得到的結果,可能會有孤立點,需要通過形態學方法去除
需要做的是」開「運算。根據觀察,我們採用5*5的核心。
得到的結果是奇異點全部消失,但是現有輪廓會有所衰弱。
3、進一步執行細化,精確定位;或者也會出現細微偏差
4、那麼,這個影象質量,我們如何建立特徵提取模型了?
對於這樣乙個點
4個象限,那麼對於我們這些交點來說,肯定是有特徵的,
比如上圖表示,對於這幅影象中的所有的點,可以區分為1-4個象限;就目前這4個象限中來看,每個象限都存在有資料的區域。
但是經過編碼發現,由於原圖中有圓形等其他影象,干擾比較大,所以可以進一步增加約束為「尋找所有該點本身、其左邊、右邊、上邊、下邊都為255的點「
由於這是乙個比較明顯的特徵,所以我們可以直接編寫**去提取。
//遍歷影象,這裡我在遍歷的時候縮了乙個畫素
vector
<
point
>
vecpoints
;for
(int
i=1;
i<
src.
rows
- 1;
i++)}}
}//在底圖上進行繪製
cvtcolor
(srcclone
,srcclone
,color_gray2bgr
);for
(int
i= 0;
i<
vecpoints
.size
();i
++)並且在原圖上進行繪圖,得到以下結果
5、這個時候,我們要對得到的有限的點進行補全和排序
需要注意的是這幾個點本身肯定是有位置關係的,如果基本符合橫平豎直的條件的話,我們可以做投影。但是具體情況還是要根據專案原始需求進行。
//對得到的有限的點進行補全和排序
vector
<
int>
vup;
vector
<
int>
vdown
;projection2
(srcboard
,vup
,vdown
,1);
此外,對可能出現的異常情況,也應該有很好的控制。
附錄:其實在這個程式中,比較關鍵的,處理解體思路之外,應該就是細化函式(來自gocvhelper/github)
//將 depth_8u型二值影象進行細化 經典的zhang並行快速細化演算法
//細化演算法
void
thin
(const
mat&
src,
mat&
dst,
const
intiterations)}
} }}
//掃瞄過程一 結束
dst.
copyto
(tmpimg
); //掃瞄過程二 開始
for(
i=1;
i<
height
; i
++)}
} }}
} //一次 先行後列掃瞄完成
//如果在掃瞄過程中沒有刪除點,則提前退出if(
isfinished
==false
)break; }
}}// end of thin
全部**:
#include
"stdafx.h"
#include
#include
#include
"gocvhelper.h"
using
namespacecv;
using
namespace
std;
using
namespacego;
intmain()}
}}//在底圖上進行繪製
cvtcolor
(srcclone
,srcclone
,color_gray2bgr
);for
(int
i= 0;
i<
vecpoints
.size
();i
++)//對得到的有限的點進行補全和排序
vector
<
int>
vup;
vector
<
int>
vdown
;projection2
(srcboard
,vup
,vdown
,1);
waitkey
();return0;}
來自為知筆記(wiz)
MATLAB 曲線與座標交叉點
matlab學習筆記 求導數 目的 找到曲線與座標的交叉點,數學含義為,y 0或者x 0。根據數學意義寫 如下 若y f x 找到所有y 0的點既可找到交叉點,即 a find y 0 不能識別交叉點,因為資料往往為離散訊號,在將訊號進行離散化的時候,交叉點被錯過,而未取得。改變策略 尋找資料 正負...
1 2 2 射線與材質的交叉點
相機生成乙個射線,首要的渲染工作是決定物體的材質,如果有的話,還要確定射線第一次互動和在哪發生互動。這個互動點順著射線是可見的,且我們希望模仿光線與物體在這個點的互動。為了找到光線互動,必須測試射線與所有物體在這個場景的互動,並且選擇出射線第乙個互動的點。假如射線為r,我們可以引數化如下形式 r t...
opencv定位十字交叉點(python)
如果有更好的思路希望大佬們可以提出 要處理的 cos 1 y sin 1 rx cos theta 1 y sin theta 1 r x cos 1 y s in 1 rx cos 2 y si n 2 rx cos theta 2 y sin theta 2 r x cos 2 y s in 2...