将数组的一部分复制到C中的第二个数组

时间:2015-02-24 18:00:49

标签: c arrays image matlab image-processing

我正在编写一个图像处理代码来执行具有可变大小窗口的中值滤波器。 灰度图像已被读入数组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中做到这一点,有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:0)

通过在循环外部使用带有预定义int的嵌套for循环来解决。在第一个循环开始时分配给0,然后在每次迭代时分配+1。

答案 1 :(得分:-2)

对于数组,无论图像是什么,都必须为图像动态分配内存,然后将其添加到数组中。我不知道如何在C中完成它,但在C ++中它看起来像:

image = new Image [5];