Spatial Filtering 2d numpy array with a 3x3 mask

AI Thread Summary
The discussion focuses on filtering large 2D matrices from DICOM files using a 3x3 mask in Python. The user has successfully implemented this in SciLab but is struggling with the syntax in Python. They need to iterate over the elements of a padded image matrix and apply the mask, similar to their SciLab code. Key points include the need to adjust for Python's zero-based indexing and ensure proper handling of rows and columns. Suggestions are made to use nested loops with the correct range and indexing. Additionally, there is curiosity about the scipy.ndimage.convolve method, which could simplify the filtering process to a single line of code, though its functionality remains untested by the participants.
ProPatto16
Messages
323
Reaction score
0
I have large 2d matrices from dicom files that i wish to filter with a 3x3 mask. the image arrays are of varying size and are padded with one border of zeros for the edge handling of the mask. i need to iterate over every element in the array and multiply it by the mask. I've done it in SciLab but so far in python i have the padded image matrix and the 3x3 mask ready to go i just need to get the syntax right.

g is the image matrix usually about 600 by 800, i.e. not square
w is the 3x3 filter

the function is SciLab is as follows

Code:
  for i=1:m;
        for j=1:n;
               g(i,j)= g(i,j)*w(1,1)+g(i+1,j)*w(2,1)+g(i+2,j)*w(3,1)...
               +g(i,j+1)*w(1,2)+g(i+1,j+1)*w(2,2)+g(i+2,j+1)*w(3,2)...
               +g(i,j+2)*w(1,3)+g(i+1,j+2)*w(2,3)+g(i+2,j+2)*w(3,3);
        end
  end

i, j and m,n refers to the array elements of the image matrix and the filter but it doesn't work like that in python.

Im just having trouble with the syntax conversions.

Thanks
 
Technology news on Phys.org
You'll need something like

Python:
for i in range(1,m):
    for j in range(1,n):
         g[i][j] = g[i][j] * w[1][1]+g[i+1][j]* etc etc etc

couple things to check when you do this,
make sure you haven't mixed up your rows/columns. I've done that before and its easy to miss (I mean make sure it shouldn't be g[ i])
Also the lists in python generally start at 0, so you may want to have range(0, m) instead of range(1,m)

Hope that helps
 
Last edited by a moderator:
Hey,
thanks, that will help..
just out of curiosity... does the ndimage.convolve method from scipy do the filtering in the same way? that would make it a one liner...
 
ProPatto16 said:
Hey,
thanks, that will help..
just out of curiosity... does the ndimage.convolve method from scipy do the filtering in the same way? that would make it a one liner...
Never used it. Try it out and see if it does :)
 
Thread 'Is this public key encryption?'
I've tried to intuit public key encryption but never quite managed. But this seems to wrap it up in a bow. This seems to be a very elegant way of transmitting a message publicly that only the sender and receiver can decipher. Is this how PKE works? No, it cant be. In the above case, the requester knows the target's "secret" key - because they have his ID, and therefore knows his birthdate.
I tried a web search "the loss of programming ", and found an article saying that all aspects of writing, developing, and testing software programs will one day all be handled through artificial intelligence. One must wonder then, who is responsible. WHO is responsible for any problems, bugs, deficiencies, or whatever malfunctions which the programs make their users endure? Things may work wrong however the "wrong" happens. AI needs to fix the problems for the users. Any way to...
Back
Top