2012-10-12 34 views
2

我試圖創建利用Matlab一個函數,它接受的角度的旋轉角度(指定方的旋轉角)和方形的長度,並返回包含0和1的矩陣使得每個單元的值是1,如果且僅當該小區是對正方形,否則爲0。繪製一個正方形給出了使用0和1

按照實施例有助於使之更加清楚:

d = 8 = length of square 
theta = 0 
size of image containing the square = 16 

img = zeros(16, 16); 
img(o.x-d:o.x+d, o.y-d:o.y+d) = 1 
output: 
0000000000000000 
0000000000000000 
0000000000000000 
0000000000000000 
0000111111110000 
0000111111110000 
0000111111110000 
0000111111110000 
0000000000000000 
0000000000000000 
0000000000000000 
0000000000000000 

上面實施例很容易證明,因爲該角度等於0. PS一種方法可能是找到每個像素(單元格)的位置並驗證像素是否在正方形內,但目標是找到一個簡單的方法。

+1

,如果您有圖像處理工具箱,然後imrotate會爲你做它完成。否則查找2D旋轉矩陣。 – Dan

回答

2

最快的方式可能會涉及到布氏算法的變化,但不會真正使太大的差別相比,檢查一個特定的像素是否是正方形內與否。後者是平凡通過圍繞中心像素點座標並檢查他們是否在範圍內,像

x' = (x - w/2)*cos(-alpha) - (y - h/2)*sin(-alpha) 
y' = (x - w/2)*sin(-alpha) + (y - h/2)*cos(-alpha) 
return abs(x') <= d/2 && abs(y') <= d/2 
+0

感謝您的回答。我同意你的看法,但我相信在這種情況下,我們應該分別用x'和y'代替x和y。 – csuo

+0

你說得對,當然 – Qnan