概述
橢圓檢測是圖像處理中的一個重要問題,其目的是從圖像中檢測出可能存在的橢圓。在實際的應用中,橢圓常常被用來描述物體的形狀或者得到物體的尺寸信息。
傳統(tǒng)的橢圓檢測方法通常采用二維Hough變換,在求解過程中需要處理大量的數(shù)據(jù),并且計算復雜度高,導致速度較慢,難以實現(xiàn)實時處理。相比之下,一維Hough變換不僅計算量小,而且可以更快地檢測出橢圓。
一維Hough變換原理
一維Hough變換的基本思想是將圖像空間坐標系中的直線映射到極坐標系中。對于每個可能的橢圓上的點集,計算相應的一維Hough變換,以判斷是否存在橢圓。具體而言,對于位于橢圓上的每個點,根據(jù)橢圓的幾何約束條件,將其投影到一個一維的直線上,并統(tǒng)計這些點在直線上的分布情況。如果存在多個位于同一條直線上的點,那么這條直線對應的橢圓就是可能的橢圓。最后,通過在極坐標空間中搜索極大值,可以得到可能的橢圓參數(shù)。
一維Hough變換的優(yōu)勢在于可以避免傳統(tǒng)二維Hough變換的高計算復雜度,提高了計算效率。此外,由于處理的是一維數(shù)據(jù)而不是二維矩陣,因而也更容易實現(xiàn)并行計算。
算法
該算法通過檢查所有可能的長軸(所有點對)來適配橢圓,并使用Hough變換得到短軸。算法復雜度取決于有效非零點的數(shù)量,因此如果有關問題的先驗知識,則盡可能在“params”輸入?yún)?shù)中提供多個限制是有益的。
由于算法需要計算成對的點距離,因此它可以相當占用內(nèi)存。如果出現(xiàn)內(nèi)存錯誤,請將輸入圖像向下采樣或以某種方式減少其中的非零點數(shù)。它可以處理大量噪聲,但在遮擋方面可能會遇到嚴重問題(需要看到長軸端點)
輸入?yún)?shù):
img
單通道輸入圖像(灰度或二進制)。 params
算法的參數(shù):
minMajorAxis:接受的長軸最小長度。
maxMajorAxis:接受的長軸最大長度。
rotation,rotationSpan:以度為單位指定主軸角度的限制。如果rotationSpan在(0,90)之間,則只接受[rotation-rotationSpan,rotation+rotationSpan]內(nèi)的角度。
minAspectRatio:橢圓的最小長寬比(在(0,1)中)
randomize:所有可能點對的子采樣。運行僅在Nrandomize對上而非檢查所有NN對。如果是0,隨機化將關閉。
numBest:返回前numBest個最佳結果
uniformWeights:用于偏愛某些點而不是其他點。如果為false,則圖像中的灰度強度加權平均到累加器點上。如果為true,則將輸入圖像視為二進制圖像,并賦予所有非零像素相同的權重。
smoothStddev:為了提供更穩(wěn)定的解決方案,累加器與高斯核卷積。此參數(shù)指定其標準偏差(以像素為單位)。 verbose
是否打印中間日志消息 返回值: 返回一個最佳擬合的矩陣。每行(共有params.numBest行)包含六個元素:[x0 y0 a b alpha score],表示橢圓的中心,其主軸和副軸長度,其角度(以度為單位)和分數(shù)。
測試代碼如下
%% 第二個參數(shù) Tr
im = imread('.\pics\test2.jpg');
Trs = [0.1,0.2,0.3,0.5,0.7,0.9];
for k = 1:6
% Tac統(tǒng)一用30
[ellipses, L, posi] = ellipseDetectionByArcSupportLSs(im, 30, Trs(k), 0);
subplot(2,3,k)
drawEllipses(ellipses',im,[1,0,0]); % 為了使用方便進行了修改,可自定義顏色
title(['\fontsize{14}Tr = ',num2str(Trs(k))])
實驗結果如下,大致就是Tac取得越小,找到的橢圓越多,但“假目標”也越多。
sp:橢圓正負性,描述橢圓內(nèi)外灰度情況(正-內(nèi)亮外暗,負-外暗內(nèi)亮),測試代碼如下
%% 第三個參數(shù)sp
if 1
im = imread('.\pics\test3.png');
sp = [1,-1,0];
for k = 1:3
[ellipses, L, posi] = ellipseDetectionByArcSupportLSs(im, 30, 0.2, sp(k));
subplot(1,3,k)
drawEllipses(ellipses',im,[1,0,0]); % 為了使用方便進行了修改,可自定義顏色
title(['\fontsize{14}sp = ',num2str(sp(k))])
end
end
實驗結果如下,取1只搜索比背景亮的橢圓,反之只搜索比背景暗的橢圓,取0則全部搜索。文章來源:http://www.zghlxwxcb.cn/news/detail-501144.html
參考:
Ellipse Detection Using 1D Hough Transform
永磁同步電機的矢量控制PMSM仿真(matlab仿真與圖像處理系列一)文章來源地址http://www.zghlxwxcb.cn/news/detail-501144.html
到了這里,關于霍夫變換橢圓檢測(matlab仿真與圖像處理系列第2期)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!