2010-12-16 30 views
3

可能重複:
detect if a pixel in RGB image belong to a line between two other pixels (MATLAB)取得一行的像素 - : - MATLAB

我想檢測圖像中的兩個像素,並讓他們 之間繪製線的所有像素。

我不想繪製線條,我只想在兩個像素 之間獲得虛擬線條中的所有像素位置[圖像中的(x,y)]。

MATLAB中的哪些函數可以幫助我解決這個問題,我該如何使用它? 。

謝謝!

+0

還有幾個相關的問題:[獲取圖像中的矢量的所有像素座標](http://stackoverflow.com/questions/1429210/get-all-pixel-coordinates-of-a-vector-inside -a-image),[MATLAB:在黑白圖像上繪製一條線](http://stackoverflow.com/questions/2464637/matlab-drawing-a-line-over-a-black-and-white-圖像) – gnovice 2010-12-16 17:30:55

回答

4

您需要類似Bresenham's line algorithm的東西。我不知道Matlab的這個功能,但現在你知道你在找什麼,你的搜索可能會更有成效。在Matlab中實現並不困難。

0

解決簡單的y = m*x + b線性方程(或其參數形式),然後檢查該線所經過的像素是否足夠。這真的取決於你想要你的線路有多精確。當然,Bresenham的線條算法會給出更準確的結果(更細,更漂亮的線條)。

+0

y = m * x + b .......... 我不認爲它可以做我想要的東西,因爲許多相同比例的線具有相同的斜率,我處理像素有一個區域(而不是絕對點),可能有些像素不能完全達到線方程 ........我會嘗試使用Bresenham的線算法...感謝所有 – user504363 2010-12-16 13:51:30

0

如果我正確理解你的問題,你在這裏有兩個問題。 (1)如何檢測圖像中的兩個像素 ---這很大程度上取決於您在問題中未提及的其他內容,它們的屬性(如它們的顏色,圖像中的位置)(它們是一起或分開),這兩個像素相對於整個圖像大小的相對比例(以設計一種有效的檢測方法)。

(2)如何在它們之間沒有連線顯示像素 ---我想你可以給所有像素位置0.5個位移,並使用'pcolor'來顯示圖像。然後,您可以鍵入如下:

p = pcolor(X,Y,C);

set(p,'EdgeColor','none'); %這將刪除像素之間的線條。

祝你好運。