膨胀算子C实现
以下是膨胀算子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的卷积核。在函数内部,使用了三重循环来遍历图像像素和卷积核,判断卷积核是否与图像像素重叠,并取最大值赋值给输出图像像素。最后,输出输出图像像素的值
原文地址: https://www.cveoy.top/t/topic/ckfD 著作权归作者所有。请勿转载和采集!