3

에서 객체의 가장자리 근처에 노이즈를 제거하는 방법 나는이 같은 이미지를 가지고 : 나는 개체의 가장자리 근처의 배경 (A 부분)을 제거하고 싶은이미지

Input image containing noise

합니다. 피사체와 노이즈의 색상이 약간 다르므로 색상 감지 기능을 사용할 계획입니다. 하지만 어쩌면 좋은 생각이 아닙니다.

나에 대한 아이디어가 있다면 고맙겠습니다. 감사합니다.

+0

당신은 당신이 "노이즈"및 오브젝트 에지 –

+0

@belisarius 사이의 인식 차이를 정확히 명시 수 : 코멘트 감사합니다. 나는 그것을 정확하게 "소음"이라고 부르지 않는다고 생각한다. 나는 배경이 색이 밝은 녹색 인 부분 (A 부분)을 의미합니다. 대상 부분은 짙은 녹색 부분입니다. – John

답변

9

이미지의 색상 기반 분류를 수행하는 경우 HSV color space으로 먼저 변환하여 특정 색상 범위를 선택하는 것이 더 쉽습니다. an answer I gave to a similar question에서 어떻게 이런 일을 할 수 있는지 설명합니다. 따라야 할 단계는 다음과 같습니다.

  • HSV로 변환하고 채도와 값이 최소 인 녹색 색상 범위 내의 색조가있는 픽셀을 선택하여 이진 마스크를 만듭니다.
  • 작은 가짜 클러스터를 제거하기 위해 결과 마스크를 일정량 침식하십시오.
  • 침식 된 마스크를 확대하여 선택한 픽셀의 부드러운 가장자리로 되돌립니다.
  • 내가 당신이 질문에 제공하는 이미지 데이터에 이러한 분석을 적용 할 방법에 정확한 예를 들어 줄 수없는

    실제로 여기에 표시되지만 데이터보다 높은 해상도는 일반적인 해결책했다

그 기능을 사용 RGB2HSV, IMERODEIMDILATE는 (마지막 두 사람은 Image Processing Toolbox 출신) :

rgbImage = imread('data.jpg'); %# Load the RGB image 
hsvImage = rgb2hsv(rgbImage); %# Convert to HSV color space 
hPlane = 360.*hsvImage(:,:,1); %# Get the hue plane, scaled from 0 to 360 
vPlane = hsvImage(:,:,3);  %# Get the value plane 
mask = (hPlane >= 80) & (hPlane <= 140) & (vPlane >= 0.3); %# Select a mask 
SE = strel('disk',10);     %# Create a disk-shaped element 
mask = imdilate(imerode(mask,SE),SE); %# Erode and dilate the mask 

그리고 여기에 위의 분석에 의해 생성 된 가장자리를 시각화하는 일부 코드입니다 :

가 0
edgeMask = mask-imerode(mask,strel('disk',1)); %# Create an edge mask 
edgeImage = zeros([size(edges) 3]);  %# Create an RGB image for the edge 
edgeImage(find(edgeMask)) = 1;   %# that's colored red 
image(rgbImage);      %# Plot the original image 
hold on; 
image(edgeImage,'AlphaData',edgeMask); %# Plot the edge image over it 

enter image description here

+0

대단히 고마워요. – John