我正在编写一个图像处理代码,以使用可变大小的窗口执行中值滤波。
灰度图像已被读取到数组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中找到实现此目的的方法,有人可以帮我吗?
最佳答案
通过在循环外使用带有预定义int的嵌套for循环来解决。在第一个循环开始时分配为0,然后在每次迭代中分配+1。
关于c - 将数组的一部分复制到C中的第二个数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28702971/