C# 索贝尔图像处理

C# 索贝尔图像处理,c#,C#,我的算法输出错误。我尝试了很多解决方案,但都没有结果。 查看我的结果。 for(int x=1;x

我的算法输出错误。我尝试了很多解决方案,但都没有结果。 查看我的结果。

for(int x=1;x对于(inti=-1;i两件可疑的事情:

    for ( int j = -1; j <= 1; j++ )
    {
        sumX += fimage[y + i, x + j].R * kernel1[i + 1, j + 1];
        sumY += fimage[y + i, x + j].R * kernel2[i + 1, j + 1];
    }
for(int j=-1;j 255-255:sum<0-0:sum;
fimage[x,y]=Color.FromArgb((字节)和,(字节)和,(字节)和);

您应该将该值保存到不同的输出图像中(使用源图像的尺寸创建一个
新位图(fimage.Width,fimage.Height)
)。这可以解释你的图片中奇怪的对角对称,基本上是另一面的符号副本。

去除了噪音我修复了你的格式,但我不确定你到底想实现什么。我使用红色组件,因为我的图像转换为灰度
    for ( int j = -1; j <= 1; j++ )
    {
        sumX += fimage[y + i, x + j].R * kernel1[i + 1, j + 1];
        sumY += fimage[y + i, x + j].R * kernel2[i + 1, j + 1];
    }
                sum = Math.Sqrt(sumX * sumX + sumY * sumY);
                sum = sum > 255 ? 255 : sum < 0 ? 0 : sum;
                fimage[x, y] = Color.FromArgb((byte)sum, (byte)sum, (byte)sum);