基于OpenCV與Qt5構(gòu)建卡尺找圓工具
前言
博主近期基于??礦ision Master4.0做了一個工業(yè)視覺工程項目,其中就使用到了??礦M的找圓工具,然后博主根據(jù)其中的技術(shù)原理,也仿照開發(fā)了一個類似的功能,基于OpenCV和Qt5構(gòu)建一個卡尺找圓的工具。卡尺找圓是在計算機視覺領(lǐng)域中常用的技術(shù),用于檢測圖像中的圓形目標,廣泛應(yīng)用于工業(yè)自動化、機器人導航等領(lǐng)域。
卡尺擬合直線參考博主的利用OpenCV與Qt5構(gòu)建卡尺擬合直線工具(C++實現(xiàn))
一、卡尺原理
卡尺的原理就是找N個小矩形ROI里面的灰度值突變的地方。即:遍歷每個小矩形ROI,分別找到1個點,這個點是灰度突變的峰值。然后把這N個點擬合成直線或者圓。
二、1D邊緣提取
-
通過Qt5構(gòu)建一個卡尺圓查找工具形狀,由一個個矩形工具構(gòu)建;
-
對平均灰度值(輪廓)進行高斯濾波,目的是讓曲線更平滑,消除噪點;
-
對平滑后的輪廓求一階導數(shù);
-
根據(jù)設(shè)置的參數(shù)提取邊緣點。
三、圓擬合
圓擬合是一種用于從給定的離散點集合中擬合出一個最佳的圓形的方法。它在許多領(lǐng)域中都有廣泛的應(yīng)用,例如計算機視覺、幾何建模等。
圓擬合的原理通?;谧钚《朔?,旨在找到一個圓形模型,使得給定的點集與該圓形模型之間的殘差平方和最小。其步驟如下:
-
數(shù)據(jù)預(yù)處理:首先,對于輸入的離散點集合,可以進行一些必要的預(yù)處理操作,例如去除異常值或噪聲點,確保數(shù)據(jù)質(zhì)量。
-
初始圓形模型估計:為了得到初始的圓形模型,通??梢酝ㄟ^其中的幾個點計算出初始的圓心位置和半徑估計值。這可以使用一些簡單的方法,如三點定圓法(經(jīng)過任意三個非共線點確定一個圓)或最小二乘法擬合一個初始圓。
-
最小二乘擬合:在得到初始的圓形模型估計后,使用最小二乘法來優(yōu)化擬合結(jié)果。最小二乘法通過迭代的方式調(diào)整圓心位置和半徑的值,使得擬合誤差最小化。
-
殘差計算和優(yōu)化:在每次迭代中,根據(jù)當前的圓心位置和半徑,計算每個點到圓的距離,然后將這些距離的平方和作為擬合誤差的度量。根據(jù)擬合誤差,通過優(yōu)化算法(如非線性最小二乘法或梯度下降法)更新圓心和半徑的值。
-
收斂判斷:對于每次迭代,可以設(shè)定一個收斂條件,當滿足條件時停止迭代,得到最終的圓形模型。
需要注意的是,圓擬合方法的性能和效果取決于離散點集的分布和噪聲程度。對于噪聲較多或存在異常點的情況,可能需要使用一些魯棒性更好的擬合方法,例如 RANSAC(隨機抽樣一致性)算法來估計圓形模型。
四、軟件實現(xiàn)
未使用商業(yè)圖像處理庫,而是純粹Qt5+OpenCV
-
選擇要查找圓的圖像
-
繪制一個矢量圓查找工具
-
圓查找
4.與??礦ision Master對比
??礦ision Master卡尺工具計算:圓半徑是233.628,圓心(831.874,504.140)
博主開發(fā)的卡尺找圓工具計算圓半徑是233.125,圓心(831.584,503.827)
文章來源:http://www.zghlxwxcb.cn/news/detail-689048.html
結(jié)束語
由于博主能力有限,本篇文章中提及的方法,也難免會有疏漏之處,希望您能熱心指出其中的錯誤,以便下次修改時能以一個更完美更嚴謹?shù)臉幼樱尸F(xiàn)在大家面前。文章來源地址http://www.zghlxwxcb.cn/news/detail-689048.html
到了這里,關(guān)于利用OpenCV與Qt5構(gòu)建卡尺找圓工具(C++實現(xiàn))的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!