기타 지식

파이썬 무료 코딩 강의를 만들었습니다 - 이미지 처리 편

안녕하세요 ^^

 

지난 데이터 분석 및 시각화 강의에 이어서 새로운 파이썬 강의를 만들어서 개붕이들께 신고 드립니다.

지난글 : https://www.dogdrip.net/355676077
 
* 주의 : 공부 글이라서 다소 재미가 없을 수 있습니다. 미리 사과 드립니다... 지식 나눔으로 봐주십쇼..


 


------------------------------------------------ 절 취 선 -----------------------------------------------------------------


최근에 식당이나 카페 등 어떤 장소에 방문하실 때 QR 코드 인식을 한 번이라도 해보셨다면 여러분은 벌써 이미지 처리를 경험하신건데요. 스마트폰 화면에 떠 있는 QR 코드를 매장 입구에 비치된 기기에 적당한 거리로 갖다 대면 자동으로 영역을 찾아서 QR 을 인식하게 됩니다. 

 

1.png

 

그리고 어떤 곳에서는 사람 키 높이에 태블릿을 설치하여 거기에 사람 얼굴을 갖다 대면 자동으로 얼굴 영역을 검출하고 체온을 측정하여 정상 여부를 알려주기도 하지요.

2.png

(출처 : https://www.emkat.com/products/emkat-temperature-screening-kiosk/)

 

 

이미지 처리(+컴퓨터 비전)란 이미지 데이터로부터 유용한 정보를 얻기 위해 이미지를 조작하고 분석하는 과정을 의미하는데, 카메라로 인식된 이미지 중에서 QR 코드를, 또는 사람 얼굴을 자동으로 검출하는 것 뿐만 아니라 정말 많은 분야에서 활용되고 있습니다. 

 

이런 거 다들 한번씩은 해보셨죠?

3.png

(출처 : https://play.google.com/store/apps/details?id=com.campmobile.snow&hl=ko )

 

 

그 외에도 몇 개 생각해보자면...

 

뉴스에 내보낼 인터뷰 동영상에서 사람 얼굴 찾아서 그 부분만 모자이크 한다던지,
차량 블랙박스 동영상을 올리려는데 다른 차의 번호판을 자동으로 찾아서 모자이크 하거나,
아, 번호판이라면 유료 주차장 들어가고 나올 때도 자동으로 인식을 하지요?
사용자에게 어울리는 옷을 추천한다던지 자동으로 몸 부분에 가상으로 옷을 입혀본다던지,
잘생겼나 못생겼나 확인하는 재미난 컨텐츠도.. 닮은꼴 연예인이라던지,
손 동작을 인식해서 마이너리티 리포트에 나오는 슉슉 하는 걸 만든다던지,
보안 검색대를 통과할 때 소지하면 안되는 물품을 자동으로 인식한다던지 등등..

 

5.jpg

 

이미지 처리는 OpenCV 의 도움을 받아서 진행합니다.

 

6.png

 

OpenCV 는 실시간 이미지 처리를 위한 오픈소스 라이브러리인데, 아주 그냥 뭐 최고입니다 ㅎㅎ

 

 

 

 

 

강의에서는 OpenCV 를 이용해서 무엇을 할 수 있는지 다양한 예제를 통해 하나씩 알아보는데요.


가령 이런 원본 이미지가 있다고 할 때,

 

8.png

 

 

간단하게는 이런 것들을 할 수가 있습니다.

 

돌리고

9.png

 

자르고

10.png

 

줄이고

11.png

 

흑백이나

12.png

 

흐리게 말이죠

13.png

 

너무 쉬워 보이나요? ^^;

 

 

 


조금 더 깊게 들어가보겠습니다.

 

책을 읽는 사진이 한 장 있는데요.

14.jpg

 

 

만약 제가 책에 있는 모든 글자 부분을 얻어와서 뭔가를 한다고 하면, 먼저 이미지를 단순하게 하기 위해 grayscale 로 변환을 해줍니다. 컬러보다는 흑백이 훨씬 아무래도 더 단순하겠죠?

15.png

 

 

여기 빨갛게 칠해진 영역의 글자를 얻어오기 위해서 opencv 의 threshold 란 함수를 이용할 수 있는데요

 

어.. 그런데 뭔가 이상합니다?

 

이렇게 저렇게 바꿔봐도 딱 원하는 부분이 잘 보이지가 않네요.

 

이건 바로 햇빛 그림자로 인해 이미지 내에서 밝은 부분과 어두운 부분이 공존해서 그렇습니다. 이미지 전체를 기준으로 적용하다보니 밝은 부분과 어두운 부분을 동일한 기준으로 처리해서 그런건데요. 

 

이럴 때는 adaptive threshold 란 것을 적용하면,

 

어때요? 훨씬 낫죠? 

 

이렇게 하면 이미지를 작은 영역으로 나누어서 처리하다보니 햇빛에 따른 음영 차이가 있어도 책에 있는 글자 부분들을 선명하게 찾아낼 수 있어요!

 

 

 

 

한 걸음 더 들어가볼게요.


이미지 처리에는 침식, 팽창이란 것도 있는데 이들을 적당히 조합한 열림 & 닫힘 연산이란 것도 쉬운 예제와 함께 공부합니다. 각각 어떤 식으로 동작하는지 자세한 설명은 물론, 어떤 경우에 써야 하는지도 쉽게 파악이 가능할 거에요.

 

열림 연산은 이런 식으로 하고

18.jpg

 

 

닫힘 연산은 요렇게 되는데요

19.png

 

음... 이 사진만 봐서는 잘 모르겠죠? ㅎㅎ;;

 

 

 

 

이런 것도 해볼 수 있어요.


이미지 내에서 어떤 영역을 찾아서 변형을 주면 이렇게 사다리꼴 형태의 이미지로부터 직사각형 형태로 이미지를 펼칠 수도 있구요.

20.png

 

원하는 영역을 선택해서 추출해보는, 반자동 문서 스캐너도 만들 수 있습니다. 예제에서는 카드 이미지로 해볼게요.

 

조금 더 나아가면 윤곽선 검출이란 것을 통해서 이미지 내에서 자동으로 카드 또는 문서가 있는 영역을 검출해서 추출해볼 수도 있어요

 

22.png

 

강의에서 다루지는 않지만 글자 영역을 검출하여 읽어내면 어떤 종류의 카드가 있는지도 쉽게 확인이 가능하지요. 명함 관리 프로그램으로 응용한다면 글자를 읽어내서 이름 / 전화번호 / 이메일 주소 등을 분류해서 저장도 할 수 있겠구요. 비대면 계좌 개설 서비스를 제공하는 입장이라 하면 신분증으로부터 원하는 영역의 글자를 읽어와서 자동으로 입력항목을 채우고, 또 주민등록번호 부분은 알아서 모자이크 또는 가리기 처리를 해볼 수도 있겠네요.

 

 

 

 

이러한 이미지 처리 기법들을 통해서 사람 얼굴을 찾아서 재미난 뭔가를 하는 게 빠질 수 없겠죠?

 

프로젝트에서는 mediapipe 라는 패키지의 도움을 받을 건데요.
(홈페이지 : https://google.github.io/mediapipe/)

 

홈페이지에 소개된 것처럼 얼굴 검출 뿐 아니라 사물 인식, 모션 인식 등 굉장히 다양하고 재미있는 작업들을 해볼 수 있답니다.

 

 

우리는 그 중에 가장 처음에 소개되는 얼굴 검출의 예제 코드를 응용해볼텐데요.

이걸 이용하면 이미지 내에서 사람 얼굴을 찾아서 눈, 코, 입, 귀의 위치를 단 몇 줄의 코드로 찾아낼 수 있고 거기에 도형도 그려볼 수 있어요.

 

 

도형 말고 동물 이미지를 한번 씌워볼까요?

 

똥손으로 그린 귀와 입입니다. 

25.png

이걸 씌워보니

 

 

이렇게 되네요 ㅋㅋㅋ

 

이제 다 되었습니다. 진짜 그럴듯한 캐릭터 이미지를 하나 구해와서 덮어 씌워보면

 

 

짠!! 

 

이 아저씨 얼굴에 귀여운 캐릭터 이미지를 씌워봤습니다.

 

사실 이 과정에서 투명도 처리를 위한 작업이 조금 있는데, 강의 뒷부분에서 아주 자세히 설명드리니 걱정하지 않으셔도 됩니다.

여기까지 공부하고 나면 여러분 머릿 속에는 온갖 창의적인 아이디어가 떠오르면서 당장 적용하고 싶은 욕구가 생길 수도 있습니다. 물론 쉽게 구현도 해볼 수 있을 거구요. 개구쟁이처럼 장난스러운 프로그램도 만들 수 있을거구요 ^^

 

 

 

강의는 약 5시간 40분 정도의 분량입니다. 이미지 처리의 모든 내용을 다루지는 않지만 초급을 넘어서 중급 정도의 활용은 해볼 수 있지 않을까 생각되네요.

 

(이미지 처리 강의 영상)

 

 

 

더 자세한 내용을 공부하고 싶거나, 영상보다는 텍스트가 편하신 분들은 아주 정리가 잘 되어 있는 아래 사이트에서 공부하셔도 좋을 거예요.

링크 : https://opencv-python.readthedocs.io/en/latest/

 

 

 

이번 강의도 파이썬에 대한 기본적인 내용은 알고 계신 분들을 위한 내용이라, 파이썬을 처음 접하시는 분들이라면 기본편 내용을 통해 먼저 기초를 다진 후에 본 영상을 봐주시면 되겠습니다.

 

(기본편)

 

 

학습하시는 분들께 도움이 되면 좋겠네요 ^^

긴 글 읽어주셔서 감사합니다.

56개의 댓글

2022.01.24
@YOURMOM

야호~

0

개붕이 덕에 코딩 재밌게 배웠음!

0
2022.01.27
@북유럽식쌈장장인

ㅋㅋ 감사합니다!!

0
2022.01.27

파이썬 opencv강의 ㅇㄷ

0
2022.01.28

구독함

0
2022.01.30

나도 옛날에 머학에서 컴퓨터 비전을 c++ 오픈cv 라이브러리로 했었음 저거 개좋더만

임계점 설정해서 흑백 양분된 사진으로 변환해서 출력하던거는 기억남

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜
12414 [호러 괴담] [살인자 이야기] 그녀는 왜 일본 최고령 여성 사형수가 되었나 그그그그 0 20 분 전
12413 [기타 지식] 최근 지각변동이 일어나는 국내 항공업계 (수정판) 10 K1A1 13 18 시간 전
12412 [역사] 이순신장군님이 노량해전에서 전사 할 수 밖에 없던 이유. 10 dkqndk 2 19 시간 전
12411 [역사] 인류의 기원 (3) 식별불해 2 1 일 전
12410 [호러 괴담] [살인자 이야기] 재벌 3세의 아내가 사라졌다? 그리고 밝혀지... 그그그그 4 2 일 전
12409 [호러 괴담] [살인자 이야기] 의붓아버지의 컴퓨터에서 발견한 사진 3 그그그그 7 5 일 전
12408 [기타 지식] 도카이촌 방사능 누출사고 실제 영상 21 ASI 2 5 일 전
12407 [역사] 지도로 보는 정사 삼국지 ver2 19 FishAndMaps 14 7 일 전
12406 [기타 지식] 웹툰 나이트런의 세계관 및 설정 - 지구 2부 20 Mtrap 6 5 일 전
12405 [기타 지식] 100년을 시간을 넘어서 유행한 칵테일, 사제락편 - 바텐더 개... 5 지나가는김개붕 1 7 일 전
12404 [기타 지식] 오이...좋아하세요? 오이 칵테일 아이리쉬 메이드편 - 바텐더... 3 지나가는김개붕 2 9 일 전
12403 [기타 지식] 웹툰 나이트런의 세계관 및 설정 - 지구 1부 30 Mtrap 12 8 일 전
12402 [기타 지식] 칵테일의 근본, 올드 패션드편 - 바텐더 개붕이의 술 이야기 15 지나가는김개붕 14 9 일 전
12401 [기타 지식] 웹툰 나이트런의 세계관 및 설정 - 인류 2부 22 Mtrap 14 9 일 전
12400 [기타 지식] 웹툰 나이트런의 세계관 및 설정 - 인류 1부 13 Mtrap 20 9 일 전
12399 [역사] 군사첩보 실패의 교과서-욤 키푸르(完) 1 綠象 1 8 일 전
12398 [호러 괴담] [살인자 이야기] 미치도록 잡고 싶었다. 체포되기까지 28년이... 1 그그그그 6 10 일 전
12397 [역사] 아편 전쟁 실제 후기의 후기 3 carrera 13 11 일 전
12396 [과학] 경계선 지능이 700만 있다는 기사들에 대해 34 LinkedList 10 11 일 전
12395 [호러 괴담] [살인자 이야기] 두 아내 모두 욕조에서 술을 마시고 익사했... 그그그그 2 14 일 전