필터 지우기
필터 지우기

clear an area in binary image

조회 수: 1 (최근 30일)
charlie
charlie 2011년 8월 14일
Hi guys,
I need to clear area in a binary image.
I only need the center part of a binary image, for example, only the center 100x100 image out of 1000x1000 image.
I know there is an easy way, prob just 1-2 line of code.
please show me your talent.
good day
C

채택된 답변

Walter Roberson
Walter Roberson 2011년 8월 14일
W = 100; %window size
img((end-W)/2+1:(end+W)/2, (end-W)/2+1:(end+W)/2) = 0;
Note: this will not work if your window size is even and your image size is odd, or if your window size is odd and your image size is even: in such cases, "center" is not well-defined.
  댓글 수: 4
Walter Roberson
Walter Roberson 2011년 8월 15일
W = 400;
if islogical(img)
t = false(size(img));
else
t = zeros(size(img),class(img));
end
t((x-W)/2+1:(x+W)/2,(y-W)/2+1:(y+W)/2) = img((x-W)/2+1:(x+W)/2,(y-W)/2+1:(y+W)/2));
Note: there are variations of the above that may be a bit clearer or shorter if you can guarantee that the img will not be of type "logical" and will not be of type "int64" or "uint64", or if you can guarantee that the code will only be used in R2011A or later.
charlie
charlie 2011년 8월 15일
thank you for your help. in the mean time, I will get more familiar with Matlab.
Have a good day.
Charlie

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

추가 답변 (1개)

bym
bym 2011년 8월 14일
img=rand(1000)<.5; % some data
img(451:550,451:550); % center 100x100
  댓글 수: 2
charlie
charlie 2011년 8월 14일
thanks, i want to know how to set everything apart the cetner 100x100 to zero. not the center 100x100.
how about with a random shift.
charlie
charlie 2011년 8월 14일
a random shift of (x,y)

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

Community Treasure Hunt

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

Start Hunting!

Translated by