기타 지식

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

안녕하세요 ^^

 

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

지난글 : 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.22
0
2022.01.22
0

구독하고 잘 보고 있음

0
2022.01.23
@낙지는나치를낚지
0
2022.01.22
0
2022.01.22

오랜만이세요!! 아 펌웨어에도 언젠간 저런걸 할 수있길..

0
2022.01.23
@케로로중사

중사님 오랜만입니다 늦었지만 새해복 많이받으세요!

0
2022.01.22

형 하다가 안되는거 질문 해도 되냐?

0
2022.01.23
@럭비보더

강의 내용 질문은 언제든지 환영!!

0

교수님이 실시간으로 돼지농장에 카메라 설치해서 딥러닝용으로 돼지얼굴 데이터 축적하라고 하는데 죽을것같아요.....

0
2022.01.23
@이성적인도라이
0
2022.01.23

와 강의력 미쳤다

0
2022.01.23
@산양꾼

감사합니다 !!

0
2022.01.23
0
2022.01.23

굿굿

0
2022.01.23

어디서 본 거 같다 했더니 이미 구독중이었네

영상 지우지 마십쇼 나중에 독학하면서 다시 보겠슴둥

0
2022.01.23
@순라면진한맛

ㅋㅋ 대부분 구독만 해놓고 다시는 나타나지 않는듯 ㅠㅠ

0
2022.01.23

뭐야 나도코딩 개드립도하네 ㄷㄷ

0
2022.01.23
@부질업다
0
2022.01.23
@나코

다음달부터 학교에서 인공지능 특강 파이썬으로 진행하는데 나도코딩 베이직 영상으로 복습했읍니다..

0
2022.01.23

open cv로 FA쪽 머신비전에다가 쓸수도 있음? 아무도 open cv 안쓰길래 물어봄..

0
2022.01.23
@바보똥개

Factory Automation의 그 FA라면 쓰인지 오래됨

하지만 중소라면 MES랑 연계하고 뭐 어쩌구저쩌구 해야하는데.... 정부에서 해준다는거 말고 관심이 없어갖고 그정도까지 고도화하지는 않는거같음

0
2022.01.23
@비온다구

아 보통 라이브러리 코그넥스나 밀 쓰길래

 

근대 얘내는 비싸서;;

 

opencv로는 재약이 많은건가?

유일하게 무료인거같던데

0
2022.01.23
@바보똥개

FA업계에서 일하는데요 openCV를 잘 안쓰죠 halcon cognex mil euresys 얘들이 워낙 잘되어있기도하고 해서 (...)

결국 FA업계에서 카메라 연결, blob, geometric, OCR 같은게 잘되면 장땡이니...

물론 openCV로도 어느정도 되는얘들은 되긴하는데 처리속도가 진짜 엄청차이나요 심하면 10배이상 차이나는경우도있었음요, (사내에서 시켜서 테스트해봤는데;;)

그냥 뭐 윗선에서 이거써라 저거써라해서 쓰긴하지만은 이미지라이브러리들이 워낙 잘된다고 보임요

0
2022.01.23
@VEngineer

아 처리속도땜에 안쓰는구나

0
2022.01.23
@바보똥개

일단 안정적인것도있고요 똑같은 작업을해도 상용라이브러리쪽이 뭔짓을한건지 진짜 ㅈㄴ빨라요..

그렇다고해서 openCV가 느린건아닌데 (막 몇초씩 걸리는건 아니지만은) 똑같은작업을해도 상용라이브러리는 10ms, openCV는 100ms걸리는거 보고앉아있으면 openCV 못쓰겠는데 라는소리가 나옴요 물론 케바케임 ㅇㅇ

0
2022.01.23
@VEngineer

100ms면 양산라인에는 쓰기 힘들겠당

 

0
2022.01.23
@바보똥개

그렇죠 아무리늦어도 우리는 앵간하면 50ms이내에 리턴줘야하구요

설비마다 다르긴하지만 200~300ms 여유난다고하면 뭘해도상관은없겠지만 그럴일은 뭐 거이없으니...

0
2022.01.23
@VEngineer

보통 비전하려면 C++ 기본이징?

0
2022.01.23
@바보똥개

하도오래된 설비들도 유지보수하고 하다보니 대부분 c++이라고 보면됨

그나마 좀 큰회사들이 부서별로다르지만 C#으로 전환하려는 추세임

당연하지만 (구)장비들은 이미 잘돌아가고있으니 굳이 그거까지 전환하는건아니고 신규장비만

0
2022.01.23
@VEngineer

하긴 개조할때 PC안바꾸면 C++그대로 가는거지 뭐

 

33살에 진입하기엔 쫌 별론가?

0
2022.01.23
@바보똥개

FA업계는 출장 잘가는사람이 필요하지 나이는ㄴㄴ상관거이안함

근데 33살에오시면 거이 CS팀으로 가시지않을까싶네요 개발팀에서는 꺼릴듯

0
2022.01.23

뭐야 나도코딩 유투버가 개붕이었어?

0
2022.01.23
@오호츠크
0
2022.01.23

와 이분 개붕이었구나

0
2022.01.23

잘볼게여

0
2022.01.23
@편안하고싶다

도움되길 바래여~ ^^

0

선생님 영상으로 파이썬 첫걸음을 시작해서 컴퓨터비전 연구실 학부연구생으로 구르고있습니다.....

0
2022.01.23
@안심해추천줬어

ㅋㅋ 힘내세요...

0

이야 이거 좋네여

 

gif를 올리면 mp4로 자동변환해서 서버트래픽을 줄이는 기술도 이거인가보네여

0
2022.01.23
[삭제 되었습니다]
2022.01.24
@sooh009
0
2022.01.23

와 정성

0
2022.01.23

너무너무 잘보고있습니다 감사합니다!

0
2022.01.24
@천사의미소

즐공하세용 ㅋ 감사합니다

0
2022.01.23

와 나코형님 개드립하는구나?? 잘보고있어 형 유익한 강의 고마워

0
2022.01.24
@년째 고민중

^^ 봐주셔서 감사합니다

0
2022.01.24

나도코딩 개드립하네.....충격

0
2022.01.24
@오늘저녁
0
2022.01.24

야코

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜
12424 [역사] 네안데르탈인은 어떻게 생겼을까? 8 식별불해 15 15 시간 전
12423 [호러 괴담] [살인자 이야기] 게임에서 만난 여대생에게 돈을 주겠다며 집... 그그그그 1 1 일 전
12422 [호러 괴담] [살인자 이야기] 바람피우던 여성의 실종, 27년 뒤 법정에 선... 그그그그 2 3 일 전
12421 [역사] American Socialists-링컨대대의 투쟁과 최후(下) 2 綠象 5 4 일 전
12420 [역사] American Socialists-링컨대대의 투쟁과 최후(中) 1 綠象 3 5 일 전
12419 [기타 지식] 아무리 만들어봐도 맛이 없는 칵테일, 브롱스편 - 바텐더 개... 3 지나가는김개붕 2 5 일 전
12418 [역사] American Socialists-링컨대대의 투쟁과 최후(上) 5 綠象 4 6 일 전
12417 [호러 괴담] [살인자 이야기] 풀리지 않는 미스테리. 보돔 호수 살인사건 2 그그그그 2 7 일 전
12416 [기타 지식] 일본에 의해서 만들어진 칵테일들 편 - 바텐더 개붕이의 술 ... 2 지나가는김개붕 6 7 일 전
12415 [기타 지식] 중국에서 안드로이드 폰을 사면 안되는 이유? 10 대한민국이탈리아 24 8 일 전
12414 [역사] English) 지도로 보는 정사 삼국지 3 FishAndMaps 5 8 일 전
12413 [호러 괴담] [살인자 이야기] 그녀는 왜 일본 최고령 여성 사형수가 되었나 10 그그그그 10 9 일 전
12412 [기타 지식] 최근 지각변동이 일어나는 국내 항공업계 (수정판) 15 K1A1 23 10 일 전
12411 [역사] 인류의 기원 (3) 3 식별불해 8 10 일 전
12410 [호러 괴담] [살인자 이야기] 재벌 3세의 아내가 사라졌다? 그리고 밝혀지... 그그그그 5 12 일 전
12409 [호러 괴담] [살인자 이야기] 의붓아버지의 컴퓨터에서 발견한 사진 3 그그그그 9 14 일 전
12408 [기타 지식] 도카이촌 방사능 누출사고 실제 영상 21 ASI 2 15 일 전
12407 [역사] 지도로 보는 정사 삼국지 ver2 19 FishAndMaps 15 17 일 전
12406 [기타 지식] 웹툰 나이트런의 세계관 및 설정 - 지구 2부 21 Mtrap 8 15 일 전
12405 [기타 지식] 100년을 시간을 넘어서 유행한 칵테일, 사제락편 - 바텐더 개... 5 지나가는김개붕 1 17 일 전