基于OpenCV與Qt5構(gòu)建卡尺擬合直線工具
前言
博主近期基于??礦ision Master4.0做了一個(gè)工業(yè)視覺工程項(xiàng)目,其中就使用到了??礦M的找直線工具,然后博主根據(jù)其中的技術(shù)原理,也仿照開發(fā)了一個(gè)類似的功能,基于OpenCV和Qt5構(gòu)建一個(gè)卡尺找直線的工具。卡尺找直線是在計(jì)算機(jī)視覺領(lǐng)域中常用的技術(shù),用于檢測(cè)圖像中的圖像,廣泛應(yīng)用于工業(yè)視覺等領(lǐng)域。
卡尺擬合圓工具可以參考博主寫的利用OpenCV與Qt5構(gòu)建卡尺找圓工具(C++實(shí)現(xiàn))
一、卡尺邊緣直線擬合概述
卡尺邊緣直線擬合是一種常用的計(jì)算機(jī)視覺技術(shù),用于在圖像中檢測(cè)和擬合出物體的直線邊緣。其原理基于數(shù)學(xué)幾何和統(tǒng)計(jì)學(xué)方法。
以下是卡尺邊緣直線擬合的基本原理:
-
邊緣檢測(cè):首先,在圖像上進(jìn)行邊緣檢測(cè),將圖像中的邊緣信息提取出來。常用的邊緣檢測(cè)算法包括Sobel算子、Canny算子等。
-
卡尺滑動(dòng)窗口:從圖像中選擇一個(gè)起始點(diǎn),然后以固定的步長(zhǎng)和方向移動(dòng)一個(gè)小窗口(通常為一維),在窗口內(nèi)計(jì)算邊緣像素的梯度。
-
距離度量與擬合:對(duì)于每個(gè)窗口,通過距離度量函數(shù)(例如,最小二乘法)來衡量窗口內(nèi)像素與直線之間的誤差。最常見的距離度量函數(shù)是點(diǎn)到直線的距離。
-
迭代更新:迭代地調(diào)整窗口的位置,使得距離度量的誤差最小化。這可以通過不斷調(diào)整窗口的位置和方向來實(shí)現(xiàn),直到達(dá)到收斂條件。
-
直線擬合:最終,當(dāng)窗口移動(dòng)到最佳擬合直線時(shí),將窗口內(nèi)的點(diǎn)擬合成一條直線模型。這可以通過擬合算法(如最小二乘法)來計(jì)算直線參數(shù)(如斜率和截距)。
通過上述步驟,卡尺邊緣直線擬合可以有效地從圖像中提取直線邊緣信息,并擬合出相應(yīng)的直線模型。這種方法在許多計(jì)算機(jī)視覺任務(wù)中都得到了廣泛應(yīng)用,如目標(biāo)檢測(cè)、線段提取、道路標(biāo)線檢測(cè)等。
二、卡尺原理
卡尺的原理就是找N個(gè)小矩形ROI里面的灰度值突變的地方。即:遍歷每個(gè)小矩形ROI,分別找到1個(gè)點(diǎn),這個(gè)點(diǎn)是灰度突變的峰值。然后把這N個(gè)點(diǎn)擬合成直線或者圓。
三、1D邊緣提取
-
通過Qt5構(gòu)建一個(gè)卡尺直線查找工具形狀,由一個(gè)個(gè)矩形工具構(gòu)建;
-
對(duì)平均灰度值(輪廓)進(jìn)行高斯濾波,目的是讓曲線更平滑,消除噪點(diǎn);
-
對(duì)平滑后的輪廓求一階導(dǎo)數(shù);
-
根據(jù)設(shè)置的參數(shù)提取邊緣點(diǎn)。
四、直線擬合原理
直線擬合是一種常見的數(shù)學(xué)方法,用于通過一組離散的數(shù)據(jù)點(diǎn)來估計(jì)并擬合一條直線模型。該方法可以在許多領(lǐng)域中應(yīng)用,如統(tǒng)計(jì)學(xué)、機(jī)器學(xué)習(xí)和計(jì)算機(jī)視覺等。
以下是直線擬合的原理:
-
數(shù)據(jù)收集:首先,收集一組已知的數(shù)據(jù)點(diǎn)。這些數(shù)據(jù)點(diǎn)可以是實(shí)驗(yàn)觀測(cè)值、樣本數(shù)據(jù)或通過其他方式獲取的數(shù)據(jù)。
-
確定擬合模型:對(duì)于直線擬合,我們假設(shè)所需擬合的模型為一條直線。直線模型可以用斜率(slope)和截距(intercept)來表示,即y = mx + b,其中m是斜率,b是截距。
-
損失函數(shù)選擇:選擇一個(gè)損失函數(shù)來度量觀測(cè)點(diǎn)與擬合直線之間的誤差。常見的損失函數(shù)是最小二乘法(Least Squares),即將每個(gè)觀測(cè)點(diǎn)到直線的垂直距離的平方求和。
-
參數(shù)估計(jì):通過最小化損失函數(shù),找到最佳的直線參數(shù)(斜率和截距)。在最小二乘法中,可以通過公式計(jì)算得到閉合解,或者使用優(yōu)化算法(如梯度下降)進(jìn)行迭代優(yōu)化。
-
模型評(píng)估:擬合直線后,可以對(duì)模型進(jìn)行評(píng)估以確定其適用性和效果。常見的評(píng)估指標(biāo)包括均方誤差(Mean Squared Error),確定系數(shù)(Coefficient of Determination)等。
五、軟件實(shí)現(xiàn)
未使用商業(yè)圖像處理庫(kù),而是純粹Qt5+OpenCV
-
選擇要查找直線的圖像
-
繪制一個(gè)直線查找工具
-
直線擬合
4.與??礦ision Master對(duì)比文章來源:http://www.zghlxwxcb.cn/news/detail-717025.html
結(jié)束語(yǔ)
由于博主能力有限,本篇文章中提及的方法,也難免會(huì)有疏漏之處,希望您能熱心指出其中的錯(cuò)誤,以便下次修改時(shí)能以一個(gè)更完美更嚴(yán)謹(jǐn)?shù)臉幼?,呈現(xiàn)在大家面前。文章來源地址http://www.zghlxwxcb.cn/news/detail-717025.html
到了這里,關(guān)于利用OpenCV與Qt5構(gòu)建卡尺擬合直線工具(C++實(shí)現(xiàn))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!