尋找雷射的交叉點

2022-01-23 09:49:55 字數 3219 閱讀 1618

這是乙個來自網友的提問:

這是一張雷射,需要得到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...