apply filter to a *circular* image

10 vues (au cours des 30 derniers jours)
Michael
Michael le 23 Mai 2012
hello
I'm trying to filter a circular image, the circle fits inside a square matrix, so for a 100x100 matrix the radius is 50 and there are some "blank" areas in the corners. When I try to filter this normally, the edges of my circular image become distorted because they attain a contribution from pixels outside the circumference.
I've had a look at "roifilt2" and the wording of the function implies it still uses values from pixels outside the circle to calculate filtered values of pixels inside the circle (the only different being it does not update the pixels outside the region of interest). So I'm not convinced this works either.
Does anyone have any ideas? My next step is to see if I can manually edit the filter2, but this will probably take a long time. Thanks for any help
Mike

Réponse acceptée

Image Analyst
Image Analyst le 23 Mai 2012
I think you're going to have to handle those boundary effects manually. Sliding window kinds of filters have the same shape as they slide along, no matter what's underneath them. If you need to modify your sliding kernel, depending on what (x,y) coordinate it's over then you'll have to put in special code for that. You might use nlfilter for that.
  2 commentaires
Michael
Michael le 31 Mai 2012
Thanks. It appears nlfilter only takes as an argument the value of the image elements, not the pixel indices themselves. Perhaps I can set all the "non-circle" elements to -1 and write a function which ignores contributions with that exact value. Thanks for the help again!
Michael
Michael le 31 Mai 2012
hmm, this is extremely slow.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by