영상 라벨링을 할 일이 생겨서 만들었어요 (인터넷에서..소스를 못찾았던 거죠 ㅠ)

글래스파이어(GrassFire) 알고리즘은

잔디에 불이 붙어서 불붙은 곳을 중심으로 주변이 야금야금 타들어가듯이 씨드와 같거나 유사한 주변의 객체의 값을 바꾸는 구조로 되어 있습니다.

예전엔 어떻게 했었는지 정확히 기억이 나지 않는데.. '야금야금'이 되려면 재귀가 되어야 할 것 같아서 그렇게 구현 해 보았습니다.



보통 이렇게 일치 시킨 값을 하나로 묶어 사용하는 일이 많고 구조가 복잡하지 않기 때문에 라벨링의 기본 알고리즘으로 많이 사용됩니다.

(교수님께서는 너 '라벨링' 그거 촌스러운 발음, '레~이블링'이라고 발음하라고 말씀하셨었죠. 문득 기억이 나는군요)

영상처리를 위해 배우긴 하였으나 게임 내 적군의 길찾기 알고리즘으로 쓰이기도 했지요

(이것을 응용한 게임을 보시려면 다음링크를 클릭 해 주세요 ->  http://topnanis.tistory.com/100 ) 

 

'GrassFire'라니.. 무척 직관적인 이름 아닌가요?



결과값의 첫번째는 기본값, 두번째는 라벨링, 세번째는 라벨링된 크기값 출력 입니다. 생각해보니.. 타들어가는 모습을 캡쳐 할 껄, 잘 못했네요

아래에 소스코드와 실행파일을 첨부합니다.


labeling.cpp

labeling.exe

--------------------------------------------------------------------------------------------------------------------------------------------

2012.9.5 수정하여 다시 올립니다. 배열을 늘리고, 테두리 부분 예외처리를 추가 하였습니다.

(혹시 실행했는데 MSVCR100.dll 에러가 발생하시면 VS2010 재배포패키지를 받아주세요.; http://topnanis.tistory.com/201 )


GrassFire(20x25).cpp

GrassFire(20x25).exe




신고
Posted by 준환이형님

댓글을 달아 주세요

  1. 온순한감자 2011.09.23 23:38 신고 Address Modify/Delete Reply

    맥에서는 실행이 안되요 ㅠㅠ

  2. 초심자 2012.06.29 23:45 신고 Address Modify/Delete Reply

    안녕하세요, 영상처리에 대해 관심이 있는 학생인데...이번에 영상인식에 대해 공부를 하고있습니다. 완전 초보라 이 알고리즘의 응용에대해서 여쭤보고 싶은데요....
    혹시 캡쳐한 영상을 특정 색에 대해 이진화한 배열에도 사용할 수 있을까요? 그리고 일정기준 갯수이상을 가진 라벨이 존재한다면 그 라벨이 무엇인지 찾을수도 있을까요?