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

Copying part of array to a second array in C

我正在编写一个图像处理代码来执行具有可变大小 window 的中值滤波器。 灰度图像已读入数组 image1,我正在尝试将数组的 window 选择复制到第二个数组 window。这对于固定大小的 window(显示 3x3 window)很容易,您可以说:

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:

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

我想不出在 C 中执行此操作的方法,有人可以帮我解决这个问题吗?

您必须为图像动态分配内存,无论图像是什么,都可以为数组分配内存,然后将其添加到您的数组中。我不知道如何在 C 中做到这一点,但在 C++ 中它看起来像:

image = new Image [5];

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