숲 이미지에서 트레일 감지


30

숲 장면 이미지에서 흔적을 식별하기위한 연구 / 서류 / 소프트웨어에 대해 알고있는 사람이 있습니까?

이미지를 가져올 수있는 알고리즘을 찾으려고합니다.

대체 텍스트

다음과 같은 가능성있는 "트레일"을 식별하는 마스크를 생성합니다.

대체 텍스트

보다시피, 원본 이미지는 약간 흐릿합니다. 이미지 소스가 완벽한 초점을 보장 할 수 없으므로 적절한 양의 노이즈와 흐릿함을 처리 할 수 ​​있어야합니다.

내 첫 번째 생각은 가우시안 블러를 적용하고 이미지를 블록으로 분할하여 인접한 블록을 비교하여 선명한 색상 차이를 찾아냅니다 (트레일 "가장자리"표시). 그러나 그림자와 기타 조명 변경으로 인해 쉽게 사라질 수 있다는 것을 금방 깨달았습니다.

SURF 기능 추출에 대해 생각하고 있었지만 이미지가 완벽하고 선명하고 일관된 조명으로 SURF / SIFT 만 성공했습니다.

또한 이미지와 마스크를 훨씬 작은 크기 (예 : 100x75)로 축소하고 1xN 벡터로 변환하고 FANN 기반 신경망 을 훈련시키는 사용했습니다 (이미지가 입력이고 마스크가 필요한 경우) 산출). 입력 벡터 크기가 75 % 인 숨겨진 레이어가 1 개인 작은 크기에서도 훈련하는 데 6 시간이 걸렸지 만 테스트 세트에서 마스크를 예측할 수 없었습니다.

누구든지 주제에 대한 다른 방법이나 논문을 제안 할 수 있습니까?


1
당신은 그것에 대해 언급하지 않았지만 카메라 / 이미지 수집을 제어합니까? 사람들은 비슷한 상황에서 근적외선 이미지를 사용하는 식생 지수를 사용합니다 (위성으로부터 산림 범위 계산을 고려). 근적외선이있는 경우 문제가 해결 될 것입니다.
carlosdc

나는 다소한다. 저렴한 단안 카메라 (웹캠 / 휴대폰 카메라)로 이미지를 찍고 있지만 적외선을 저장하지 않는다고 생각합니다.
Cerin

식물과 먼지의 스펙트럼을 구별 할 수있는 여러 컬러 필터를 사용하는 것이 도움이 될 것입니다
endolith

교육과 감지를 위해 베이지안 접근 방식을 시도한 것이 궁금합니다. 며칠 전에 쓴 답변이 있지만 시도한 후에 해고했다고 생각했기 때문에 삭제했습니다. 해당 옵션을 아직 고려하지 않은 경우 삭제를 취소하겠습니다.
Lorem Ipsum

@yoda, Bayesian 접근법은 무엇을 의미합니까? 나는 이산 분류와 논리 네트워크에 적용되는 베이지안에만 익숙합니다. CV에 적용되는 것에 익숙하지 않습니다. 나는 당신에 의해 게시물을 본 기억이 없습니다.
Cerin

답변:


13

그 자체로는 충분하지 않을 수 있지만 문제 중 하나는 조명 변형과 관련이 있으므로 그림자 제거 전처리 단계가 도움이 될 수 있습니다. 내가 생각하는 기술은 다음 백서에 설명되어 있습니다.

"이미지에서 그림자 제거", GD Finlayson, SD Hordley, C. Lu 및 MS Drew, IEEE 패턴 분석 및 머신 인텔리전스 (PAMI), Vol.28, No.1, 2006 년 1 월, pp.59- 68. http://www.cs.sfu.ca/~mark/ftp/Pami06/pami06.pdf

프로세스의 첫 번째 부분은 조명 불변의 회색조 이미지를 생성하는데,이 경우 아마도 원하는 것입니다. 다음은 그들이 논문에 제시 한 예를 보여줍니다.

그림자 제거
(출처 : datageist.com )

실제로, "색도"이미지를 생성하기 위해 한 단계 더 나아가는 것은 살아있는 잎과 죽은 잎을 명확하게 구별해야 할 수도 있습니다. 다시 한 번, 논문의 예 :

색도
(출처 : datageist.com )

그러나 중요한 것은 카메라를 먼저 보정해야한다는 것입니다. 그것이 가능하다고 가정하면, 그들이 묘사하는 표현의 일부 조합은 아마도 당신이 사용하는 다른 방법을보다 효과적으로 만들 것입니다.


12

소스 이미지에 마스크 이미지를 생성하기 충분한 정보가 없다고 생각합니다 . 색상별로 분류하여 시작할 수 있습니다. 즉, 녹색은 흔적이없고 회색 / 갈색입니다. 그러나 "트레일 테두리"에는 마스크에 표시되지 않은 회색 / 갈색 영역이 있습니다. 소스 이미지의 왼쪽 아래 사분면을 참조하십시오.

제공하는 마스크는 소스 이미지에서 분명하지 않은 구조적 제약 조건을 의미합니다. 예를 들어 트레일의 너비가 고정되어있을 경우 해당 정보를 사용하여 패턴 인식기가 반환 한 예비 마스크를 제한 할 수 있습니다.

구조 주제 계속 : 트레일이 다른 트레일과 병합됩니까? 특정 토양 / 자갈 특징으로 흔적이 묘사되어 있습니까? 인간으로서 (패턴 인식에 상당히 능숙합니다!) 저는 왼쪽 아래 사분면에 표시된 기능에 도전합니다. "트레일"로 할인 할 수없는 회색 / 갈색 영역이 보입니다. 지도와 대략적으로 알려진 위치,이 트레일에서의 개인적인 경험 또는이 시점으로 이어지는 일련의 이미지 등 더 많은 정보가 있다면 아마도 결정적으로 할 수있을 것입니다. "이 장면으로 이끈.

내 의견으로는 이미지 모음이 가장 흥미로운 접근법입니다. 그 생각의 라인을 계속 : 하나의 이미지는 충분한 데이터를 제공하지 않을 수 있지만 탁 트인 전망은 장면을 명확하게 할 수 있습니다.


예, 트레일은 다른 사람들과 합쳐집니다. 그렇습니다. 트레일은 비-트레일 영역과 구분되어야한다는 점에서 토양 / 자갈 형상으로 표시됩니다. 일부 섹션에서는 이미지가 까다로울 수 있지만, 트레일이 어디에 있는지에 대해 충분히 추측하기에 충분한 정보가 있다고 생각합니다. 이 트레일에 익숙하지 않더라도 문제가 없었던 것처럼 들립니다 (왼쪽 하단 영역 제외).

실제로 나는 트레일의 경계로 꽤 좋은 추측을 할 수 있습니다. 그러나 소스 이미지에 표시된 것보다 더 많은 정보에 의존하고 있습니다. 나는 트레일이 무엇인지를 "알고"있다. 아마도 트레일을 구성하는 두드러진 특징의 모델 또는 템플릿을 직접 경험을 통해 또는 그림에서 잘 정의 된 트레일을 보는 등을 구성했기 때문일 것이다. 요약 : 트레일을 인식하는 데 소스 이미지, 소스 이미지에서 관찰 한 것보다 훨씬 더 많은 것을 그립니다.

비전 시스템이 이용할 수있는 트레일에는 몇 가지 특성이 있습니다. 트레일은 자유롭고 탐색 가능한 공간을 나타냅니다. 따라서 나무, 덤불 및 암석 특징은 "추적되지 않음"으로 분류 될 수 있습니다. 아마도 질감 분석이 이것들을 식별하는 데 도움이 될 수 있습니까? 나는 확실하지 않다 : 나무 아래의 땅 (왼쪽 중간에서 위쪽으로)은 트레일과 매우 비슷하게 보인다.

내 첫 번째 아이디어는 텍스처가 매우 거친 경우 높은 응답을 제공하는 LU 또는 Eigen 변환을 참조하는 것이 었습니다. 그러나 여기서 트레일 / 비트 레일의 주요 특징은 색상 인 것 같습니다. 따라서 어쩌면 그것을 HSV 색 공간으로 변환하고 '어스름 한'색조 (갈색 또는 황토)가있는 픽셀에서 마스크를 만드는 것은 대략적인 추정치를 줄 것입니다.
AruniRC

12

임의의 이미지에서 트레일을 마술처럼 감지하는 단일 알고리즘은 없습니다. 머신 러닝 기반 루틴을 구현하고 트레일을 감지하려면 "트레이닝"해야합니다. 너무 많은 세부 사항을 다루지 않고 감독 학습 방식에서 수행 할 작업에 대한 대략적인 개요가 있습니다.

  1. "훈련 예제"가 필요합니다. 즉, 다른 환경에서 트레일의 여러 그림을 의미합니다. 여기에서 관리자 (관리자)는 "트레일"로 간주되는 배경과 "포리스트"라는 배경을 표시했습니다. 이미지를 더 작은 섹션 (일반적으로 8x8)으로 나누고 블록의 DCT (이산 코사인 변환)를 사용하여 이미지를 "기능 공간"으로 변환합니다. 이 경우 각 블록의 DCT는 64 점 "기능 벡터"를 제공합니다.
  2. 피쳐 공간 , 피쳐 세트 (64 포인트 피쳐 벡터의 서브 세트) 및 클래스 및 인 클래스 스페이스 정의 훈련 세트에서 :XxYy1=traily2=forest

    • 클래스 조건부 분포
      • PX|Y(x|trail) , 클래스가 때 피처의 조건부 밀도 . trail
      • PX|Y(x|forest) , 클래스 인 기능에 대한 조건부 밀도 . forest
    • 클래스 확률 또는 이전
      • trailPY(trail) , 블록에서 을 찾을 확률trail
      • forestPY(forest) , 블록에서 을 찾을 확률forest
  3. 이를 통해 이미지를 테스트하고 (더 작은 조각으로 나눕니다) 사후 확률을 계산합니다. Bayes의 의사 결정 이론을 사용하여 이진 (이 경우) 선택 기준을 다음과 같이 정의합니다.

    y~i(x)=argmaxyiPX|Y(x|yi) PY(yi)
    여기서 가장 높은 사후 확률을 가진 클래스에 각 블록을 할당합니다. 이진 마스크가 생성됩니다.

이것은 접근 방식에 대한 매우 간단한 개요입니다. 고려해야 할 사항이 몇 가지 있으며, 가장 중요한 것은 문제에 적합한 기능 세트를 선택하는 것입니다. 혼합 모델 사용 및 커널 기반 밀도 추정과 같은 더 복잡한 작업을 수행 할 수도 있지만, 답변을 작성하기에는 너무 상세하고 시간이 많이 걸립니다.

이 접근법이 시도해 볼만한 가치가 있다는 동기 부여와 확인을 위해, 오래 전에 강의 과제로 한 일의 예가 있습니다. 이는 달성하려는 것과 매우 유사합니다. 목표는 배경 식물 (왼쪽 이미지)에서 동물을 감지하는 것이 었습니다. 오른쪽 그림은 전경과 배경을 구별하기 위해 "학습"후에 얻은 이진 마스크를 보여줍니다.

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

머신 러닝에 대해 더 배우려면 몇 가지 교과서를보십시오. 이 분야에서 잘 알려지고 자주 권장되는 교과서 중 하나는 다음과 같습니다.

T. Hastie, R. Tibshirani 및 J. Friedman, 통계 학습의 요소 : 데이터 마이닝, 추론 및 예측. Springer-Verlag 2nd Ed. (2008)

제공된 링크에서 무료 PDF로 제공됩니다. 다른 좋은 책은 다음과 같습니다.

RO Duda, PE Hart 및 DG Stork, 패턴 분류 , 2nd Ed., John Wiley & Sons (2001)


1
그 메모에서 기계 학습에 대한 훌륭한 소개 인 ml-class.org 를 지적하고 싶습니다 .
bjoernz

재미있는 방법. 그러나 Py (trail) 및 Py (forest)가 "전체 그림에서 흔적을 찾을 가능성"이라고 말하면 8x8 블록 또는 전체 이미지에서 흔적을 찾을 가능성이 있습니까? 전체 이미지라면 두 이미지가 모두 100 %가 될 것이라고 생각합니다. 모든 트레이닝 이미지가이 둘을 모두 어딘가에 가지고 있기 때문입니다.
Cerin

@ Cerin : Py (trail)에 의해 죄송합니다. 블록에서 찾을 확률을 의미합니다. 이것이 전체 그림의 총 블록 수를 추적하는 모든 블록의 총합입니다. 이를 수정하기 위해 편집했습니다
Lorem Ipsum

피처 공간 X를 어떻게 정의 하시겠습니까? K-Means 군집화와 같은 것을 사용하여 64 포인트 특징 벡터의 차원을 10 개의 특징으로 줄이겠습니까?
Cerin

@Cerin 예, K- 평균은 차원을 줄이는 일반적인 접근 방법 중 하나입니다.
Lorem Ipsum


5

텍스처 분할에 문제가있는 것 같습니다 (색상 분할이 아님). 많은 방법이 있습니다.

그들은 종종 http://note.sonots.com/SciSoftware/GaborTextureSegmentation.html 과 같은 Gabor 웨이블릿을 사용합니다.

수퍼 픽셀 기반 세분화 http://ttic.uchicago.edu/~xren/research/superpixel/

유사한 그래프 컷 세분화 http://en.wikipedia.org/wiki/Graph_cuts_in_computer_vision

다음은 위키 개요입니다. http://en.wikipedia.org/wiki/Segmentation_(image_processing)


개버 텍스처 세분화가 좋을 것 같습니다!
nkint
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.