图像处理经常会用到边界处理,代码如下:
void mirror_extension(int *ImgIn, int *Img_extension, int vsize, int hsize, int w, int h)
{
int i, j;
for(i = 0; i < h; i++)
{
for(j = 0; j < w; j++)
{
Img_extension[(i + vsize)*(w + 2 * hsize) + (j + hsize)] = ImgIn[i*w + j];
}
}
for(i = 0; i < vsize; i++)
{
for(j = 0; j < w; j++)
{
Img_extension[i*(w + 2 * hsize) + (j + hsize)] = ImgIn[(vsize - i)*w + j];
}
}
for(i = 0; i < h + vsize; i++)
{
for(j = 0; j < hsize; j++)
{
Img_extension[i*(w + 2 * hsize) + (w + hsize + j)] = Img_extension[i*(w + 2 * hsize) + (w + hsize - 2 - j)];
}
}
for(i = 0; i < vsize; i++)
{
for(j = 0; j < w + hsize; j++)
{
Img_extension[(h + vsize + i)*(w + 2 * hsize) + (j + hsize)] = Img_extension[(h + vsize - 2 - i)*(w + 2 * hsize) + (j + hsize)];
}
}
for(i = 0; i < h + 2 * vsize; i++)
{
for(j = 0; j < hsize; j++)
{
Img_extension[i*(w + 2 * hsize) + j] = Img_extension[i*(w + 2 * hsize) + (2 * hsize - j)];
}
}
}