0、前言---为什么要这么做
目前国内外的大环境下,许多的视觉公司或者爱好者,大多数是调用opencv、halcon、visionpro等库,鲜有人从底层算法着手,因为在于这个迎难而上的初心下,笔者会陆续公布一些基础算子自研,给大家来抛砖引玉,有好的想法的同学,可以把想法发我。
1、3x3平均值滤波算子源码
void FILT33MEAN(void *I_image, void *O_image, int size_x, int size_y)
{
int i, j, ia1, im1, ja1, jm1;
float mean_value;
BYTE *ptr1, *ptr2;
ptr1 = (BYTE *)I_image;
ptr2 = (BYTE *)O_image;
for (i = 0; i < size_x; i++)
{
for (j = 0; j < size_y; j++)
{
ia1 = (i + 1 > size_x - 1) ? size_x - 1 : i + 1;//get i+1
ja1 = (j + 1 > size_y - 1) ? size_y - 1 : j + 1;//get j+1
im1 = (i - 1 < 0) ? 0 : i - 1;//get i-1
jm1 = (j - 1 < 0) ? 0 : j - 1;//get j-1
mean_value =ptr1[im1 * size_y + jm1] + ptr1[im1 * size_y + j] + ptr1[im1 * size_y + ja1]
+ ptr1[i * size_y + jm1]