回答
好的,這裏有一些代碼讓你開始。這絕不是完美的,但這很有趣,我希望它能幫助你。代碼中最重要的部分實際上是由@Amro在這個偉大的答案中編寫的:check me!。我加入了Amro的代碼來繪製橢圓(謝謝Amro!)。
正如我在我的評論中提到的,您可以使用帶有幾個參數的regionprops來估計符合某種形狀的橢圓。名稱不言自明,可用於描述橢圓。下面是我看起來像一個馬鈴薯虛擬形狀:
我們將在regionprops
使用的參數是:
'Centroid'
'MajorAxisLength'
'MinorAxisLength'
'Orientation'
和'PixelList'
像素列表用於繪製圖像的原始形狀。快速和骯髒的方式來看看適合多好。
所以這裏是代碼:
1)閱讀的圖像,將其轉換爲黑色和白色(即二進制),並應用regionprops:
clear all
clc
A = im2bw(imread('DummyEllipse.jpg'));
s = regionprops(A,'Centroid','MajorAxisLength','MinorAxisLength','Orientation','PixelList')
2)從S結構恢復參數。請注意,我從結構進入第二個元素,因爲第一個1對應於繪圖區的邊緣(我不知道如何稱呼它不好意思):
PixList = s(2).PixelList;
x = s(2).Centroid(1);
y = s(2).Centroid(2);
a = s(2).MajorAxisLength/2;
b = s(2).MinorAxisLength/2;
angle = s(2).Orientation;
steps = 50;
3)提供這些參數AMRO碼來計算橢圓:
%# @param x X coordinate
%# @param y Y coordinate
%# @param a Semimajor axis
%# @param b Semiminor axis
%# @param angle Angle of the ellipse (in degrees)
beta = angle * (pi/180);
sinbeta = sin(beta);
cosbeta = cos(beta);
alpha = linspace(0, 360, steps)' .* (pi/180);
sinalpha = sin(alpha);
cosalpha = cos(alpha);
X = x + (a * cosalpha * cosbeta - b * sinalpha * sinbeta);
Y = y + (a * cosalpha * sinbeta + b * sinalpha * cosbeta);
4)畫出的結果:
figure
plot(PixList(:,1),rot90(PixList(:,2),2),'-r') % flip the y coordinates because indexing in Matlab starts form the top of the image.
hold on
plot(X,Y,'k','LineWidth',2)
hold off
這使我:
所以它不是完美的,但希望它能幫助你開始。
非常感謝您的詳細解答。我剛剛在這行中遇到了一個錯誤:'PixList = s(2).PixelList;',提及:'索引超出了矩陣的維度。這是爲什麼?謝謝 – productive 2014-10-03 16:22:20
哦,在這種情況下,你想使用s(1)。像我上面寫的PixelList和s(1).Centroid(等)而不是s(2)。在我的情況下,regionprops輸出2個「區域」,包括位置1中數字的實際邊界,所以我用2作爲索引。如果你得到這個錯誤,圖形邊界可能不被考慮,並且這個結構的大小是1而不是2,就像我的情況一樣。我會檢查一下,看看它是如何發生的,但這應該可以解決你的問題。 – 2014-10-03 17:52:00
所以@生產它可以幫助你嗎? – 2014-10-06 00:02:21
- 1. 將不規則形狀擬合成圓形
- 2. MATLAB曲線擬合(橢圓形)
- 3. Python Tkinter。來自數據點的最佳擬合橢圓
- 4. CSS定義形狀橢圓
- 5. 橢圓擬合對MATALB
- 6. 獲取橢圓形視圖的顏色
- 7. 呈現不規則的按鈕形狀 - 最佳做法
- 8. 不規則形狀
- 9. 直接橢圓擬合後橢圓係數的非歸一化
- 10. 使用不規則形狀的CSS圓形菜單
- 11. 在Java中移動橢圓和橢圓形狀?
- 12. 圓柱形表面上的點的最佳擬合軸
- 13. 改進我的橢圓擬合算法
- 14. 在不規則形狀多邊形內獲取緯度/深度
- 15. 虛擬遊戲杆邊框橢圓而不是圓形
- 16. 向JPanel添加橢圓形狀
- 17. 重繪餅圖中橢圓形狀highcharts
- 18. 橢圓幾何自定義形狀
- 19. android橢圓形狀對話框
- 20. 安卓:橢圓形不妙
- 21. InkCanvas表面可以是圓形/橢圓形狀嗎?
- 22. Android onTouch不規則形狀
- 23. 從分散點評估/擬合橢圓
- 24. 擬合橢圓到邏輯矩陣
- 25. 橢圓擬合瞳孔中心
- 26. Python將橢圓擬合到圖像
- 27. 公制爲橢圓OpenCV中擬合
- 28. 不規則的矩形形狀
- 29. OpenGL繪製橢圓而不是圓形
- 30. jQuery獲取橢圓文本
請問您可以添加這些省略的例子。 – kkuilla 2014-10-03 13:30:08
如果你想使用regionprops,那麼這些參數可能是要走的路:Centroid,MajorAxisLength,MinorAxisLength,定位 – 2014-10-03 13:47:12