이미지에서 특정 배경을 제거하는 방법은 무엇입니까?


11

주황색

이것은 Gabor 필터링 후 얻은 이미지입니다. 밝은 흰색의 둥근 결함을 제외하고 이미지 내부의 선을 제거하는 방법이 있습니까?

개버 필터의 다른 방향을 시도한 결과는 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

임계 값 초과 후 : 충분하지만 좋지 않은 경우

여기에 이미지 설명을 입력하십시오

중앙값 필터링 후 :

여기에 이미지 설명을 입력하십시오

미리 감사드립니다


2
중앙값 필터에 적합합니다. 당신은 잘하고 있습니다.
Rethunk

이것은 확산 필터를 적용하는 좋은 시나리오처럼 보입니다. 또한,에 물어보십시오 <BR/> dsp.stackexchange.com/ <br> photo.stackexchange.com/ <br>
대니 Varod

임계 값 이후 중앙값 필터를 적용 했습니까? 그렇다면 임계 값없이 시도하십시오.
Danny Varod

네, 문턱 후 그것을 시도하고 내가 전에 그것을했을 때 거의 같은 결과를 얻었다
vini

답변:


12

Gábor-filter의 출력이 신뢰할 수 있고 이미지 데이터의 변동이 너무 커서 결과가 완전히 다르게 보이지 않으면 다음 접근 방식을 사용할 수 있습니다 (이미 언급 한 부분).

  1. 자동 임계 값 알고리즘으로 두 번째 이미지를 이진화하십시오. 작동하는 임계 값의 범위는 알 수 있습니다.

  2. 구성 요소 레이블 알고리즘을 사용하여 연결된 각 픽셀 영역에 고유 한 값을 레이블하십시오.

  3. 이미지의 모든 구성 요소에 대해 객체가 채워진 원에 얼마나 가까운 지 설명하는 속성을 계산하십시오. 이를 위해 예를 들어 compactness를 사용할 수 있습니다 . 나는 동등한 디스크 반경 내에서 픽셀의 분수 아래를 사용했습니다 . 이 반지름은 객체와 동일한 면적을 가진 디스크의 반지름입니다.

    1. 영역 은 단순히 객체의 픽셀 수를 계산합니다.
    2. 주어진 영역의 원의 반경을 계산하는 것도 관리 가능해야합니다
    3. 이 반경 안에있는 픽셀의 경우 각 이미지 객체의 중심이 필요하지만 이는 객체 픽셀의 모든 위치의 평균입니다. 당신이 물리학 자라면, 당신은 여러 점 질량의 질량 중심을 알고 있습니다. 이것은 동등합니다.
    4. 이제 각 객체의 모든 픽셀에 대해 중심으로부터의 거리를 계산하고 원 반경보다 작은 지 여부를 확인하십시오. 두 숫자를 나누면 내부 및 외부 픽셀의 분수를 얻습니다.
  4. 분수가 가장 높은 물체를 가져갑니다. 참고 : 픽셀이 하나만있는 객체의 값은 1입니다. 따라서 크기 임계 값을 설정하고 10 픽셀과 같은 더 큰 객체 만 가져와야합니다.

자동 이진화가 제대로 작동하는지 확인하려면 다음과 같이 임계 값이 매우 낮고 매우 높습니다.

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오

구성 요소 라벨링 업데이트

컴포넌트 라벨링은 응용 프로그램에 중요하지 않습니다. 직접 구현 해야하는 경우 매우 간단한 방법을 사용하는 것이 좋습니다. Wikipedia 사이트 의 one pass 버전 은 매우 쉽습니다. 기본적으로 바이너리 이미지를 반복하고 흰색이고 아직 레이블이없는 픽셀을 만나면이 객체에 대해 새 레이블을 사용 하여이 픽셀로 시작합니다.

이 객체에 레이블을 붙이는 과정은 기본적으로 플러드 필과 유사합니다. 이것은 Wikipedia 사이트에서 알고리즘의 내부 단계 1-4입니다. 이 레이블이 지정된 픽셀로 시작하여 모든 이웃을 스택에 넣습니다 ( 벡터 사용 ). 스택의 픽셀의 경우 전경인지 라벨이 없는지 확인합니다. 레이블을 지정해야하는 경우 모든 이웃을 스택에 다시 넣습니다. 스택이 비워 질 때까지이 작업을 수행하십시오.

그런 다음 이미지를 통해 스캔을 계속하십시오. Wiki 사이트의 설명과 달리 원본 이미지에서 픽셀을 제거 할 필요는 없으며 레이블 이미지에 0과 다른 값이 있으면 건너 뜁니다.


여기에 어떤 유능한 라벨링 알고리즘이 있습니까?
vini

1
@vini, 내 게시물을 업데이트했습니다. 포논, 고마워 우리는 많은 형태 학적 수단을 사용하며 특히 압축은 한참 전에 매우 유용했습니다.

yup great it :)
vini

6

몇 가지 아이디어 :

  1. 가장자리 강도의 밀도에 따라 가장자리를 필터링합니다. 원형 커널의 근사를 사용하여 평균 모서리 강도 (또는 다른 측정 값)를 찾으십시오. 임계 값 이하의 모서리를 통과하고 임계 값 아래의 모서리를 검은 색으로 설정합니다.
  2. 형태 학적 "닫기"작업 (확장 후 침식)을 사용하여 이미지를 정리 한 다음 영역 레이블링 알고리즘 (일명 연결된 구성 요소, 얼룩)을 사용하여 모든 얼룩을 찾습니다. 크기, 장축과 부축의 비율 등에 따라 블롭 데이터를 필터링합니다.
  3. 가우시안 블러를 시도하고 이진화 임계 값을 찾아 어두운 곳에서 빛을 분할 한 다음 위의 2 단계에서 설명한대로 얼룩을 필터링합니다. (가우시안 블러의 빠른 근사치를 위해 눈꺼풀을 꽉 쥐고 이미지를 가늘게 뜨십시오.)
  4. Photoshop 또는 김프에서 몇 가지 필터를 사용해보십시오.

편집 : 중간 필터링 단계 후 대부분의 방법입니다. 잘 했어! 위에서 제안한 항목 2 (닫은 다음 지역 레이블)는 나머지 방법을 안내하는 한 가지 기술입니다.


yup는 무슨 일이 일어날 수 있도록 노력하겠습니다
vini

1

활성 윤곽을 시도 할 수 있습니다. 속도는 느릴 수 있지만 이와 같은 복잡한 경우를 처리 할 수 ​​있습니다.

또는 사전 지식을 사용하여이 이미지를 처리 ​​할 수 ​​있습니다. 예를 들어, blob은 'big'및 'connected'라는 것을 알고 있습니다. 따라서 연결된 각 지역의 수를 세면 찾을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.