필터 지우기
필터 지우기

Circular patch using COLFILT?

조회 수: 1 (최근 30일)
Faraz
Faraz 2013년 11월 4일
댓글: Sean de Wolski 2013년 11월 4일
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?

답변 (2개)

Sean de Wolski
Sean de Wolski 2013년 11월 4일
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))

Image Analyst
Image Analyst 2013년 11월 4일
To do that, (max-min), it looks like you can use rangefilt().
  댓글 수: 1
Sean de Wolski
Sean de Wolski 2013년 11월 4일
Yeah, actually:
F = floor(rangefilt(I,getnhood(strel('disk',r)))./r)

댓글을 달려면 로그인하십시오.

Community Treasure Hunt

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

Start Hunting!

Translated by