应用水平Sobel Mask将图像旋转180度

时间:2016-12-21 17:04:51

标签: python image image-processing edge-detection sobel

在我的一个个人项目中,我尝试在灰度图像上应用以下水平边缘蒙版。通过应用水平边缘蒙版,我试图检测图像中的水平边缘。

setfacl -Rm u:www-data:rwX,u:deploy:rwX application/storage/

当我尝试使用上面给出的蒙版卷积我的图像矩阵时,输出图像旋转180度。我不确定这是预期的行为还是我做错了什么?

这是卷积的代码片段。

[1 2 1
 0 0 0 
-1 -2 -1]

原始灰度输入图像在这里 - enter image description here

以下是生成的输出。

enter image description here

1 个答案:

答案 0 :(得分:1)

写入输出时的索引相反。您正在翻转水平和垂直坐标,这实际上会转换您的图像输出,而您看到的输出是转置图像的结果。

此外,您无法正确声明图像的输出尺寸。第一个维度跨越高度,而第二个维度跨越宽度。您必须进行的第一个更改是交换输出图像的输入尺寸:

result = np.zeros((self.mat_height, self.mat_width))

其次,变量index_i横向遍历,而变量index_j垂直遍历。您只需翻转订单,以便正确编写结果:

        if prod >= 255:
            result[index_j, index_i] = 255
        else:
            result[index_j, index_i] = 0

如果由于某种原因您不想更改订单,请将代码保留原样,包括如何声明图像的输出尺寸并简单地返回转置的结果:

return result.T