2
$\begingroup$

I have a Matrix, M, of dimensions width x height. The problem is to apply the [-1, 0, 1] filter along the x and y axis (i.e. convolve the image with [-1, 0, 1] kernel along horizontal and vertical axis) in order to compute derivates dx and dy of M along the x and y direction respectively.

I am somewhat familliar with convolution, however I have never heard the terminology "convolve with kernel". How is this different than convolving two functions?

The following algorithm represents my understanding of how the operation would occur. Is this correct, or is there an error in my understanding?

M <- generate matrix with dimensions width x height dx <- zero matrix with dimensions width x height dy <- zero matrix with dimensions width x height  for row from 0 to height:     for col from 0 to width:         dx[row][col] = M[row][col+1] - M[row][col-1]         dy[row][col] = M[row+1][col] - M[row-1][col] 
  • 1
    To convolve [something] with a kernel just means to convolve two functions, one of which is the something and the other is the kernel. In your particular case, the functions are two-dimensional, which may be adding to your confusion. But the principle is exactly the same.2012-11-20
  • 0
    I guess part of my confusion has to do with the wording of the problem. It states to convolve the kernel against the horizontal and vertical axes of the matrix.2012-11-20
  • 1
    That wording does seem like a mild abuse of terminology. They just want you to interpret the one-dimensional signal $[-1,0,1]$ as a 2D signal by orienting it horizontally or vertically. After that, you convolve two 2D signals as usual.2012-11-20
  • 0
    Thanks, I assumed that what they meant but I wasn't sure if I was just completely missing it. If I interpret [-1,0,1] as a 2D signal is my pseudo-code correct? One aspect that I'm not sure about is that in a normal convolution operation, you reflect one of the the functions about some line (i.e. the y axis in the 1D case, y=x in the 2D case), but this problem wants to find the "derivatives". Intuitively, I would think this would mean that I shouldn't flip [-1,0,1] around, but if I didn't, then I wouldn't be doing the convolution operation.2012-11-20

1 Answers 1