以下是膨胀算子C实现的示例代码:

#include <stdio.h>

// 膨胀算子函数
void dilation(int image[5][5], int kernel[3][3], int output[5][5]) {
    int i, j, k, l, max;
    // 遍历图像像素
    for (i = 0; i < 5; i++) {
        for (j = 0; j < 5; j++) {
            max = 0;
            // 遍历卷积核
            for (k = 0; k < 3; k++) {
                for (l = 0; l < 3; l++) {
                    // 判断卷积核是否与图像像素重叠
                    if (i + k - 1 >= 0 && i + k - 1 < 5 && j + l - 1 >= 0 && j + l - 1 < 5) {
                        // 取卷积核和图像像素的最大值
                        if (kernel[k][l] + image[i + k - 1][j + l - 1] > max) {
                            max = kernel[k][l] + image[i + k - 1][j + l - 1];
                        }
                    }
                }
            }
            // 将最大值赋值给输出图像像素
            output[i][j] = max;
        }
    }
}

int main() {
    int image[5][5] = {{0, 0, 0, 0, 0},
                       {0, 1, 1, 0, 0},
                       {0, 1, 1, 0, 0},
                       {0, 0, 0, 0, 0},
                       {0, 0, 0, 0, 0}};
    int kernel[3][3] = {{1, 1, 1},
                        {1, 1, 1},
                        {1, 1, 1}};
    int output[5][5];
    dilation(image, kernel, output);
    int i, j;
    // 输出输出图像像素
    for (i = 0; i < 5; i++) {
        for (j = 0; j < 5; j++) {
            printf("%d ", output[i][j]);
        }
        printf("\n");
    }
    return 0;
}

该代码实现了一个大小为5x5的图像的膨胀算子,使用了一个大小为3x3的卷积核。在函数内部,使用了三重循环来遍历图像像素和卷积核,判断卷积核是否与图像像素重叠,并取最大值赋值给输出图像像素。最后,输出输出图像像素的值

膨胀算子C实现

原文地址: https://www.cveoy.top/t/topic/ckfD 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录