gpt4 book ai didi

image-processing - 图像处理-实现Sobel滤波器

转载 作者:行者123 更新时间:2023-12-03 09:04:35 24 4
gpt4 key购买 nike

我有一个实现Sobel过滤器的任务,如您所知,它是用于边缘检测的图像处理过滤器。
但是不幸的是,我在图像处理 Realm 没有任何经验,以至于我什至不知道计算机中图像是如何表示的。完全没有这个 Realm 的知识。

我已经阅读了一些论文和PDF,但是它们专注于许多主题,我觉得我可能不需要它们来完成任务。

我们很高兴知道您的建议,或者为此目的有任何特殊的论文,PDF,教程或快速指南。

谢谢

编辑:

谢谢你们 :)
我们的工作结果可以从here下载。

最佳答案

这很容易,您只需要使用Sobel滤波器对图像进行卷积即可。 Sobel滤波器有两个内核,x方向内核和y方向内核。 x方向内核检测水平边缘,而y方向内核检测垂直边缘。

x方向内核(大小为3x3)

float kernelx[3][3] = {{-1, 0, 1}, 
{-2, 0, 2},
{-1, 0, 1}};

y向内核
float kernely[3][3] = {{-1, -2, -1}, 
{0, 0, 0},
{1, 2, 1}};

要计算像素(x,y)处的卷积,请定义一个大小等于内核大小的窗口(用于计算x大小和y大小的源代码是相同的):
double magX = 0.0; // this is your magnitude

for(int a = 0; a < 3; a++)
{
for(int b = 0; b < 3; b++)
{
int xn = x + a - 1;
int yn = y + b - 1;

int index = xn + yn * width;
magX += image[index] * kernelx[a][b];
}
}

请注意,输入是灰度图像,可以将其表示为double的1D数组(这只是一个技巧,因为可以使用index = [x + y * width]来访问坐标(x,y)中的像素值)

在给定magX和magY的情况下计算像素(x,y)的大小:

mag = sqrt(magX ^ 2 + magY ^ 2)

关于image-processing - 图像处理-实现Sobel滤波器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17815687/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com