나는 원격지에서 로봇의 캠영상을 보면서 로봇을 원격조종하고 싶었어.
모두가 알다시피 동영상은 용량이 엄청 큰 데이터라서 이걸 실시간으로 날리려면 통신기의 통신 속도가 엄청 중요해.
그리고 우리 주변에서 흔히 쓰이는 무선통신방식의 전송속도는 대충 이렇게 생겨먹었지.
1. Zigbee ( ~ 250kbps)
2. Bluetooth ( ~ 2Mbps)
3. LTE (~75Mbps)
4. WIFI ( ~ 100Mbps)
내가 이쪽은 잘 모르지만 아마 실시간으로 동영상을 스트리밍 하는데 필요한 대역폭(전송속도)이 많이 양보해서 10Mbps 정도는 필요할거야.
자연히 동영상을 제공하는 기능들이 선택할 수 있는 통신망은 LTE나 WIFI처럼 대역폭이 넓은 통신망을 선택할 수 밖에 없어..
그게 싫으면 별도의 통신장비를 만들어야겠지 -_-;;
한마디로 비싸단 소리야.
WIFI는 저렴하지만 실외에서 사용하기 어렵잖아?
아니면 영상을 무선으로 전송할 수 있는 모듈을 사면 되긴 하는데... (열라비싸..ㅆㅂ)
내가 거지라서 통신장비 살만한 것은 Zigbee, Bluetooth 정도만 있어도 감지덕지인데(아냐.. 솔직히 얘들도 비싸 ㅠㅠ)
그래서 조금 고민해보다가 어차피 로보트 조종하는데 풀컬러 영상이 필요한건 아니잖아?
어차피 로보트 주변에 뭐가 있는지 알기만 하면 감지덕진데...
그래서 한번 윤곽선만 구해보려고 마음먹음.

윤곽선은 특별한 방법을 쓴건 아니고 그냥 라플레시안으로 구한건데 흠... 그냥 이거 보고 로보트 조종할 수 있겠다 싶은거야 -_-;;
그럼 뭐 답 있나.. 해 봐야지
그림 2.
압축절차는 특별할 건 없어. 그냥 윤곽선 빼고 다 버리는거야.
1. 웹캠에서 영상의 한 프레임을 얻는다.
2. HSI로 변경해서 I 채널을 분리한다. (그레이스케일로 변환)
3. 프레임의 크기를 320x240 정도의 크기로 작게 만든다.
4. 라플라시안 필터를 사용하여 윤곽선을 얻는다.
5. 얻어진 윤곽선을 2진화 한다.
6. 이진화 영상의 가로를 교대로 삭제한다. (비월주사방식)
7. 이진화 영상을 png로 압축한다.
이때 프레임의 크기랑 이진화 할 때의 경계치를 조절하면 화면에 품질이랑 프레임의 용량을 트레이드오프 할 수 있음.
그리고 윤곽선의 이진화 영상은 픽셀이 같은게 반복되는 패턴이 워낙 많으니까 JPEG보다는 PNG가 압축효율이 훨씬 좋아.
그림 3.
그러면 볼때는 어떻게 보냐고?
별거 없음 그냥 PNG 압축풀고 쭉 잡아늘리면 끝 --;;
비월주사방식이기 때문에 동영상으로 보면 보기에 품질이 조금 나아져...
지그비는 한프레임당 2kbyte를 넘지 않도록 하고, 블루투스는 한 프레임당 13kbyte를 넘지 않도록 조절해 주면 됨.
아래는 2 kbyte짜리 동영상임.
화면이 자글자글 해서 로보트 조종하기 짜증날 화면이긴 한데 그래도 이거라도 나오는게 어딘가 싶음 -_-
이거는 13kbyte에 프레임 사이즈를 맞추었을 때 나오는 영상이야.
품질이 꽤 좋다고 보임 어지간한 글자나 사물도 식별이 가능한 수준이지..
내가 보기에는 이거 보면서 로보트 조종이 그럭저럭 가능하지 않을까 싶어
멋지네요. 고생하셨습니다. 콘베이어벨트 어디서 파나요? 집에서 런닝머신 만들 수 있을까요? 런닝머신용 콘베이어 벨트는 어디서 구입할 수 있을까요?
님 한남대 다님?