2015-02-24 34 views
0

我在寫一個圖像處理代碼來執行一個具有可變大小窗口的中值過濾器。 灰度圖像已被讀入數組image1,我試圖將數組的窗口選擇複製到第二個數組窗口中。這很容易爲一個固定尺寸的窗口(圖示3×3窗口)的同時可以只說:將數組的一部分複製到第二個數組中C

window = image1(m-((win_size-1)/2):m+((win_size-1)/2),n-((win_size-1)/2):n+((win_size-1)/2)); 

window[1]=image1[m-((win_size-1)/2)][n-((win_size-1)/2)]; 
window[2]=image1[m][n-((win_size-1)/2)]; 
window[3]=image1[m+((win_size-1)/2)][n-((win_size-1)/2)]; 
window[4]=image1[m-((win_size-1)/2)][n]; 
window[5]=image1[m][n]; 
window[6]=image1[m+((win_size-1)/2)][n]; 
window[7]=image1[m-((win_size-1)/2)][n+((win_size-1)/2)]; 
window[8]=image1[m][n+((win_size-1)/2)]; 
window[9]=image1[m+((win_size=1)/2)][n+((win_size-1)/2)]; 

在MATLAB中可以通過在陣列呼叫使用向量容易概括這對任何尺寸的窗口

我不能在C中創建一個這樣的方法,任何人都可以幫助我解決這個問題嗎?

+0

爲了在結構和數組之間複製大量的數據,瞭解'memmove()'。 – 2015-02-24 18:14:49

+0

@LeeDanielCrocker爲什麼不'memcpy'?源和目標在這裏不重疊,所以不需要使用中間存儲... – 2015-02-24 18:17:03

+0

更安全地推薦給新手,並且大多數好的'memmove()'實現不使用中間存儲。 – 2015-02-24 18:35:13

回答

0

通過嵌套與外循環預先定義的INT循環解決。在第一次循環開始時分配爲0,然後在每次迭代時分配+1。

-2

您將不得不爲圖像動態分配內存,無論圖像是什麼,然後將數組添加到數組中。我不知道究竟是如何做到這一點在C,但在C++中它看起來是這樣的:

image = new Image [5]; 
+2

這不是一個答案。 – 2015-02-24 18:14:55

相關問題