2009-12-24 76 views
0

我上的C#程序來處理圖像時(給定爲INT [,])..2D像素陣列的旋轉和縮放

我有像素的2D陣列,並且我需要圍繞一個點旋轉它們,然後縮小它們以適應原始數組。我已經找到有關使用矩陣轉換爲點並旋轉然後轉換回來的文章。剩下的就是縮放合成圖像以適應原始大小的數組。

這怎麼辦? (優選具有2個方程一個用於x和一個用於Y)

回答

1

看一看here。這應該給你所有的座標旋轉背後的數學。

+0

他需要一個很好的插值算法,雖然如果他不想讓他的圖像看起來一團糟 – horseyguy

+0

是的,雖然他也有興趣做旋轉圖像 - 這將處理它的插值部分。 –

0

您需要做的所有事情都可以在GDI +中使用Bitmap圖像完成(使用System.Drawing...名稱空間)。這些類是專門爲這種事情設計和優化的(圖像處理)。是否有任何特殊的原因,你不能使用Bitmap而不是int[,]?你甚至可以編寫一個非常簡單的例程,從int[,]創建一個Bitmap,根據需要在Bitmap上做任何事情,然後在最後將其轉換回int[,]

1

您需要找到從結果數組到原始圖像的轉換。然後將目標中的點轉換爲源圖像中的點並複製。通過過採樣進行抗鋸齒也是一種選擇。您的旋轉矩陣也可以應用比例縮放 - 只需將矩陣乘以比例因子(假定爲2x2)。如果您正在爲旋轉,縮放和平移做3x3矩陣,則只需將左上方的2x2乘以比例因子即可。

最後,冒着一些謙虛的風險,這裏是一些舊的TP6/asm DOS代碼,這些代碼是我爲全屏旋轉縮放而寫的。奇怪的東西,堅持在網上: http://www.hornet.org/cgi-bin/scene-search.cgi?search=Paul%20H.%20Kahler

+0

+1您在rotozoomer中選擇的有趣方法(自述文件中提到了您的方法4)。 –