2012-01-17 184 views
1

我得到一系列正方形的二進制圖像作爲在下面的圖片, enter image description here如何將45°-135°座標系統的座標值轉換爲地球座標系統?

我想找到紅點,這是四個塊(2黑色和白色2)的交叉點。爲此,我使用沿着方形圖像的對角線方向的所有像素值的總和,分別是45度和135度。最大像素總和45度線和最小像素總和135度線是我紅點所在的位置。

現在我已經獲得了45度-135度座標系中紅點的座標,如何將它們轉換爲地球座標?

也就是說,我在45deg-135deg座標系統中有一個觀點,我如何在x-y座標系中找到相應的座標值?什麼是轉換矩陣?

一些更多的信息,可以幫助:

1)如果圖像是一個60x60的形象,我得到了45deg,135deg系統120個值,因爲我掃描每一行後面列添加像素。

回答

1

我對matlab並不瞭解很多,但總體而言,您只需將網格旋轉45度即可。 這是一個有用的鏈接;說明你的旋轉矩陣,你需要

wikipedia rotation matrix article

新座標點之後二維旋轉這個樣子:
X」 = X \ COS \ theta - 用Y \罪\ THETA。
y'= x \ sin \ theta + y \ cos \ theta。

用45代替theta(或者-45),你應該全部設置。

如果你的紅點在(X,Y)開始時,則-45度旋轉後,將有新的座標(X」,Y‘),其定義如下:

X’ = x cos(-45) - y sin(-45)
y'= x sin(-45)+ y cos(-45)

+0

確實如此,但並不那麼簡單,因爲您的新圖像座標可能指向圖像採樣點之間,所以您必須進行某種插值(例如雙線性)。我寧願使用imrotate函數爲我處理(如果您有圖像處理工具箱)。 – WebMonster 2012-01-17 07:47:21

+0

@WebMonster,就是這麼簡單。假設你會在另一個方向進行旋轉。然後你有位置*像素來自哪裏*,並且你可以插入它的原始圖像。插值2d不是很難實現。 – halirutan 2012-01-17 22:32:39

1

對不起,當我誤解你的問題,但你爲什麼旋轉圖像?紅點的x值就是x方向的導數具有最大絕對值的點。而對於y方向,它與y方向上的導數相同。

假設你有下面的圖片

enter image description here

如果你把它在一開始所有1圖像的第一行和大部分寬度零的。第一列的情節看起來像這樣。

enter image description here

現在你卷積此行與內核{-1,1}這是在你的線上只有一個嵌套循環,你會得到

enter image description here

現在經歷的這個結果和提取具有最高值的點的位置可得到72.因此,紅點的x位置爲73(因爲卷積的核心太快找到了導數的一點)。

因此,如果數據是上述二值圖像,然後提取你的紅點位置的圖像矩陣附近是一條線在數學

Last[Transpose[Position[ListConvolve[{-1, 1}, #] & /@ 
{data[[1]],Transpose[data][[1]]}, 1 | -1]]] + 1 

在這裏,你得到{73, 86}這是如果y的正確位置= 0是最上面一行。這種方法應該在幾分鐘內以任何語言實施。

備註:

  1. 的近似衍生物這是卷積的結果可以是負的或正的。這取決於它是否從0變爲1,反之亦然。如果你想搜索最高值,你必須取卷積結果的絕對值。

  2. 請記住,圖像矩陣的第一行並不總是在顯示圖像的頂部位置。這取決於您使用的軟件。如果你得到錯誤的值,請注意這一點。

+0

線不總是地球軸90度和0度,它們不斷變化。把它想象成一個紡紗機構。這種方法仍然有效嗎? – Sulla 2012-01-17 05:05:31

+0

如果你的方形圖像可以旋轉,那麼我不明白你爲什麼掃描45度和135度。假設上面的正方形圖像正好旋轉了45度,那麼就和你剛纔掃描上面圖像中的行和列一樣。你可以更新你的文章與3個不同的方形圖像沒有任何框架或添加線? – halirutan 2012-01-17 14:25:22