Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Sobel滤波器错误结果_Python_Image Processing_Filter_Convolution_Sobel - Fatal编程技术网

Python Sobel滤波器错误结果

Python Sobel滤波器错误结果,python,image-processing,filter,convolution,sobel,Python,Image Processing,Filter,Convolution,Sobel,我正在用python编写Sobel过滤器, 但结果似乎和另一个不同, 我的代码有错误吗? 还是我误解了sobol过滤器 这就是我的结果 请编辑以修复您的输入错误。我没有时间完全检查您的代码,但我在一秒钟内看到您将行掩码与img和colMask与img进行了卷积。实际上,您要做的是将img的结果和一个掩码与第二个掩码进行卷积。否则,就用第二个卷积覆盖第一个卷积的结果。所以你实际上不是在计算一个分离的Sobel过滤器atm。出于某种原因,你的代码在我的电脑上需要20秒。我假设几毫秒。但也许我的电脑

我正在用python编写Sobel过滤器, 但结果似乎和另一个不同, 我的代码有错误吗? 还是我误解了sobol过滤器

这就是我的结果


请编辑以修复您的输入错误。我没有时间完全检查您的代码,但我在一秒钟内看到您将
行掩码
img
colMask
img
进行了卷积。实际上,您要做的是将
img
的结果和一个掩码与第二个掩码进行卷积。否则,就用第二个卷积覆盖第一个卷积的结果。所以你实际上不是在计算一个分离的Sobel过滤器atm。出于某种原因,你的代码在我的电脑上需要20秒。我假设几毫秒。但也许我的电脑有问题。
import cv2
import numpy as np

img = cv2.imread('Lenna.png',0)
cv2.imshow('image',img)


def convolution(img,rowMask,columnsMask,maskSize,r):


    outPut = np.zeros((len(img),len(img[0])))
    img = np.pad(img,r,"constant")

    for y in range(0,len(outPut)):
        for x in range(0,len(outPut[0])):
            outPut[y][x] = convolutionRow(img,y+r, x+r, maskSize,rowMask,r)

    for y in range(0,len(outPut)):
        for x in range(0,len(outPut[0])):
            outPut[y][x] = convolutionColumns(img,y+r, x+r, maskSize,columnsMask,r)

    return outPut


def convolutionRow(img,y,x,maskSize,rowMask,r):
    sum = 0
    for i in range(0,maskSize):
        sum += img[y][x-r+i]*rowMask[i]
    return sum

def convolutionColumns(img,y,x,maskSize,columnsMask,r):
    sum = 0
    for i in range(0,maskSize):
        sum += img[y-r+i][x]*columnsMask[i]
    return sum

SobelXRowMask=np.array([0.125,0.25,0.125])
SobelXColumnsMask=np.array([-0.125,0,0.125])

SobelX = convolution(img, SobelXRowMask, SobelXColumnsMask,3,1)
cv2.imshow('SobelXOutPut',SobelX)


SobelYRowMask=np.array([-0.125,0,0.125])
SobelYColumnsMask=np.array([0.125,0.25,0.125])

SobelY = convolution(img, SobelYRowMask, SobelYColumnsMask,3,1)
cv2.imshow('SobelYOutPut',SobelY)

cv2.waitKey(0)
cv2.destroyAllWindows()