1월25일 오늘의 일기

원규의 차근차근·2022년 1월 25일
1

오늘은 인물사진에 대해서 배웠다.
그 인물은 또렷하게 나오고 배경은 흐릿하게 나오는 그 사진 말하는거다.

그럼 프로그램을 짜기 전 가장 먼저 해야할 노드를 짜자

여기서 좀 봐야할 부분은 2번째 줄에 있는 urllib이란 건데, 이건 웹에서 데이터를 다운로드 할 때 사용된다고 한다.
그 다음 줄에 있는 cv2는 openCV라이브러리로 이미지를 처리하기 위해 필요하다고 한다.
이번 익스노드는 이미지를 처리하기 때문에 필요한 요소라 할 수 있다.
그다음 5번째 줄에 pixellib은 시멘트 세그멘테이션(오늘 사용할)을 편하게 사용할 수 있는 라이브러리이다.

그럼 내 폴더에 저장되어 있는 사진을 가져와보자.
근데 원래 이미지는 전에도 말했지만 bgr이라서 퍼렇게 보이기 때문에 rgb로 바꿔 원래 색상이 나오게 해준다.


오늘 사진작업을 할 수 있게 프로그램을 다운로드 해보자.


아까 위에서 말한 시맨틱 세그멘테이션은 이미지에서 픽셀을 사람,자동차,비행기 등의 물리적단위로 분류하는 방법이라고 한다.


그럼 그 세그멘테이션에다가 이미지를 넣어보자.

세그멘테이션에 모델을 불러올 때 pascalvoc란게 있었다.
이 pascalvoc데이터로 학습된 모델을 이용하겠다는 의미였다.
이 pascalvoc에는 21가지 데이터가 있고 지금 이 작업을 할 때 내 사진을 사용하니까 person(인물)을 사용해야 한다.


한번 사진을 불러와보자.
그럼 배경은 검은색이고 내 실루엣은 파란색으로 출력이 되었다.


아까 파스칼에서 person은 16번째에 있었는데 여기는 15번으로 써있다.
이게 1부터 시작하는게 아닌 0부터 시작해서 15 person이 나온것이다.


파스칼이 배경이랑 사람으로 구분을 시켜줬다.


방금 person은 15번이라고 했다. 그러면 결과값에서 15번을 찾아보자


위에 명령어를 적어주면 바로 사람의 색상정보를 출력해준다.
그런데 아까도 말했지만 이거 그냥 뽑으면 파란색으로 나온다.
즉 bgr로 되어있는데 이것을 다시 rgb로 바꿔줘야 한다.


그래서 역순으로 해주면 다시 rgb값으로 나온다.


여기서 아까 세그멘데이션이 넣어지면 배경은 0값을 가지게 되어 검정색이 되었고
나는 1값을 가지게 되어 하얗게 나왔다.


세그멘데이션 입혀진 이미지에 다시 색상을 넣어보면 내 사진에 색이 좀 돌아왔다.
거기에 이제 적당히 이미지와 미스트를 적당히 합쳐야 하는데 나는 저 위에 비율로 합쳤다
당연히 여기도 bgr->rgb해줘야지


이제 이미지를 뿌옇게 만들어보자.
원래 기존값으로 13으로 하라고 했는데 나는 티가 안나서 20으로 써줬다.


뿌옇게 만든 이미지에 세그멘데이션 마스크를 추출해보기 위해 원래 배경은 0, 인물은 255였는데 bitwise이용하여 연산을 하게되면 배경이랑 인물값이 서로 바뀌게 된다.
즉 내 모양 실루엣만 남고 0되엇서 사라져버렸다.


0값인 내 마스크에 다시 255 숫자를 넣으면 배경은 뿌연데 내 얼굴은 깔끔하게 나오는 인물사진이 완성되었다.
고양이도 이거랑 비슷하게 하면 된다.
단, 아까 사람은 15였는데 고양이는 8이다.

profile
우후루꾸루후구무루구부

0개의 댓글

관련 채용 정보