Circular patch using COLFILT?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi there,
COLFILT operates a function on a matrix/image within a rectangular patch of [m n]. Instead of a rectangular one; I want my function to operate within a circular disc/mask. Is there a way to do it?
Example:
r = 5; % a certain length
rc = @(x) floor(((max(x)-min(x))/r))+ 1; % a non-linear filter
F= colfilt(I, [r r],'sliding', rc); % I is my 2D matrix/image
Query: Here, if I want to have a disk of radius r, instead of a rectangle [r r], how I do that?
0 commentaires
Réponses (2)
Sean de Wolski
le 4 Nov 2013
Inside of your anonymous function, you could use logical indexing to only apply the operation to the circular part of the rectangular. As for generating the circle, an easy way:
M = getnhood(strel('disk',r))
0 commentaires
Image Analyst
le 4 Nov 2013
To do that, (max-min), it looks like you can use rangefilt().
1 commentaire
Sean de Wolski
le 4 Nov 2013
Yeah, actually:
F = floor(rangefilt(I,getnhood(strel('disk',r)))./r)
Voir également
Catégories
En savoir plus sur Image Processing Toolbox dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!