본문으로 바로가기

이미지나 영상관련해서는 알게 모르게 제가 초보 주제에 생각보다는 많은 글을 올린것 같습니다.^^ 이번에는 mahotas를 소개할까 합니다. 꽤 괜찮은 모듈인데.. Python 3.5부터 버전이 지원되지 않아서 아쉬웠는데 최근 업데이트를 해주어서 3.6에서도 잘 동작합니다. mahotas 모듈을 가지고 재미있는 공부를 많이 했거든요. 그러다가 그들의 공식홈페이지에 공개되어 있는 예제 중에 월리를 찾는 예지를 보고 저도 한 번 돌려 봤습니다. (이 이야기는 제가 짠 코드가 아니라는 거죠 ㅎㅎㅎ) mahotas는 conda 명령으로 설치하는게 편하더군요.

import matplotlib.pyplot as plt
import mahotas as mh
%matplotlib inline

wally = mh.demos.load('Wally')

plt.figure(figsize=(14,14))
plt.imshow(wally)
plt.show()

먼저 mahotas를 import하고 월리를 읽어보도록 하겠습니다.~~

오랜만이죠? 먼저 눈으로 한 번 찾아보시죠 월리~~~~~ 월리의 특징은 힌색 빨간색이 번갈아 나타나는 셔츠를 입고 있다는 것입니다.

import numpy as np

wfloat = wally.astype(float)
r,g,b = wfloat.transpose((2,0,1))
w = wfloat.mean(2)

pattern = np.ones((24,16), float)
for i in np.arange(2):
    pattern[i::4] = -1
    
pattern

이렇게~ 그 흰색-빨간색 패턴을 지정하기 위한 작업을 좀 하구요~~~

그리고,

v = mh.convolve(r-w, pattern)
mask = (v == v.max())
mask = mh.dilate(mask, np.ones((48,24)))
np.subtract(wally, .8*wally * ~mask[:,:,None], out=wally, casting='unsafe')

plt.figure(figsize=(14,14))
plt.imshow(wally)
plt.show()

이렇게 컨볼루션 연산을 통해 이미지 전체에 마스크를 씌어주면~

그냥~ 월리를 찾네요.. 전 영상인식을 제대로 공부한 적이 없어서 참 신기한데요. 이번 기회에 컨볼루션 연산이 영상 인식에 어떤 영향을 주는 건지 공부해야겠어요~~~^^


댓글을 달아 주세요

  1. BlogIcon 잉여토기 2018.10.18 10:54 신고

    프로그램으로 월리를 쉽게 찾을 수 있네요.
    추억의 월리를 찾아라 나와 반갑네요~^^

  2. BlogIcon 공수래공수거 2018.10.18 11:05 신고

    한때 월리 찾기 열심히 했었는데..ㅎ
    영상인식 방법을 사용할수도 있군요 ㅋ

  3. BlogIcon 스티마 2018.10.18 13:18 신고

    사람이 하기 힘든 어려운일을 인공지능을 통해 할 수 있으니 정말 좋군요. 너무 신기하네요. 특히 월리는 특징이 명확해서 컴퓨터가 찾기 수월할것 같아요.

  4. BlogIcon 글쓰는 엔지니어 2018.10.18 13:41 신고

    대박 신기해요 ㅎㅎㅎㅎ 저도 파이썬 공부하고있는데 한번 해봐야겠어요 ㅎㅎㅎㅎ 월리를 한번에 찾네요 ㅋㅋㅋ

  5. BlogIcon 핑구야 날자 2018.10.19 06:51 신고

    예전에 참 많이 보던 원리를 영상인식으로 볼 수 있다니 재미있네요

  6. BlogIcon 멜로요우 2018.10.19 08:41 신고

    예전에 윌리 많이 찾았었는데 컴퓨터로도 찾을수 있나보네요.ㅋ 책으로 찾은 추억이 기억이 새록새록나네요

  7. BlogIcon 북두협객 2018.10.19 09:59 신고

    프로그래밍으로 월리를 걍 찾아버리네요. 참 어떻게 보면 무서워요 ㅎㅎ

  8. BlogIcon 구차니 2018.10.22 16:47 신고

    으아아아 획기적입니다! ㅋㅋㅋ