我在寫一個圖像處理代碼來執行一個具有可變大小窗口的中值過濾器。 灰度圖像已被讀入數組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中創建一個這樣的方法,任何人都可以幫助我解決這個問題嗎?
爲了在結構和數組之間複製大量的數據,瞭解'memmove()'。 – 2015-02-24 18:14:49
@LeeDanielCrocker爲什麼不'memcpy'?源和目標在這裏不重疊,所以不需要使用中間存儲... – 2015-02-24 18:17:03
更安全地推薦給新手,並且大多數好的'memmove()'實現不使用中間存儲。 – 2015-02-24 18:35:13