【发布时间】:2015-04-26 11:59:20
【问题描述】:
我正在编写一个图像处理代码来执行具有可变大小窗口的中值滤波器。 灰度图像已读入数组 image1,我正在尝试将数组的窗口选择复制到第二个数组窗口中。这对于固定大小的窗口(显示为 3x3 窗口)来说很容易,您可以这样说:
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 中,您可以通过在数组调用中使用向量轻松地将其推广到任何大小的窗口:
window = image1(m-((win_size-1)/2):m+((win_size-1)/2),n-((win_size-1)/2):n+((win_size-1)/2));
我无法在 C 中找到一种方法来做到这一点,有人可以帮我解决这个问题吗?
【问题讨论】:
-
在结构体和数组之间复制大量数据,了解
memmove()。 -
@LeeDanielCrocker 为什么不
memcpy?这里源和目的不重叠,所以不需要使用中间存储... -
向新手推荐更安全,大多数好的
memmove()实现不使用中间存储。
标签: c arrays image matlab image-processing