이미지 처리 중 전면 프레임과 후면 프레임 간 서로 다른 조명의 영향을 줄이는 방법
단계
1. 최대(최소) 값 필터링을 수행하여 초기 조명 맵을 얻습니다.
2. 평균(또는 가우스) 필터링을 수행하여 최종 결과를 얻습니다. 조명 분포 맵
3. 원본 이미지에서 조명 이미지를 빼서 전경 타겟을 얻습니다.
밤
함께 제공되는 rice.png 이미지를 가져옵니다. MATLAB을 예로 들어보겠습니다. 우리는 쌀을 배경과 구별할 수 있기를 바랍니다. 직관적인 접근 방식은 임계값 분할을 사용하여 이진 이미지를 만든 다음 연결된 영역을 표시하여 각 쌀의 크기와 중심 위치를 알 수 있는 것입니다.
그러나 쌀 이미지를 자세히 살펴보면 사진 촬영 중 조명이 고르지 않아 분할을 위한 전역 임계값을 사용하기 어렵게 되어 배경의 일부가 흐려지는 현상이 발생합니다. 대상으로 인식되거나(임계값이 너무 작음) 일부 대상이 손실됩니다(임계값이 너무 큼). 불균일한 조명을 제거한 후 이진화하면 어떤 결과가 나올까요?
코드
function newIm= DUCO_RemoveBackGround(im,w,isShow)
%im: 원본 이미지 w 필터 창 크기; 프로세스
%
%
if isShow==1
그림
imshow(im,[] )
end
bk=double(im);
%1. 최소값 필터
bk=ordfilt2(bk,1 , 일(w,w),'대칭');
if isShow==1
그림
서브플롯(2,2,1) p >
imshow(bk,[]),title('최소값 필터링 후 결과'); %필터링된 이미지 표시
end
%2. /p>
h=ones(w,w)/(w*w);
bk=imfilter(bk,h,'replicate');
if isShow ==1
subplot(2,2,2)
imshow(bk,[]),title('평균 필터링 후 결과'); %이미지 필터링 후 표시
p>end
%3. 균일하지 않은 밝기를 뺀 결과
newIm=imsubtract(double(im),bk);
if isShow ==1
subplot(2,2,3)
imshow(newIm,[]);title('배경 이미지 제거'); p>
end
%4. 대상을 이진화하고 분할합니다.
th=graythresh(newIm/255);
newIm=im2bw(newIm /255,th);
if isShow==1
subplot(2,2,4)
imshow(newIm),title('바이너리 값 결과'); 필터링된 이미지
끝
끝