조재훈팀

cdc wiki
이동: 둘러보기, 검색

프로젝트 개요

기술개발 과제

 국문 :  위치기반 촬영 가이드 카메라 어플리케이션(Cam On Sketch) 
영문 : Location-based camera shooting guide application

과제 팀명

조재훈팀

지도교수

정형구 교수님

개발기간

2020년 3월 ~ 2020년 6월 (총 4개월)

구성원 소개

서울시립대학교 컴퓨터과학부 20159200** 도*찬 (팀장) 
서울시립대학교 컴퓨터과학부 20159200** 김*식
서울시립대학교 컴퓨터과학부 20159200** 박*근
서울시립대학교 컴퓨터과학부 20159200** 하*민

서론

개발 과제의 개요

개발 과제 요약

사진에 소질이 없어 포토그래퍼들의 사진을 참고하여 좋은 사진을 남기고 싶은 사용자들을 위해 제작되었으며, 사용자가 해당 위치에서 찍은 사진 중 마음에 드는 사진을 고르면 카메라 화면상에서 가이드 라인을 띄워 쉽게 좋은 사진을 찍을 수 있도록 도와준다.

개발 과제의 배경

인기 게시물 속 저 사진은 어떻게 찍었을까? SNS에는 매일 해시태그와 함께 유명한 여행지와 명소의 멋진 사진들이 올라온다. 하지만, 동일한 장소에서 동일한 스마트폰 카메라로 찍었는데, 도저히 같은 느낌이 나지 않던 경험이 다들 있을 것이다. 이와 같이, 소중한 순간을 더 완벽하게 기록하고 싶은 사람들을 위해 사진 촬영의 어려움을 해소하는 것이 우리의 목표이다.

개발 과제의 목표 및 내용

- 똑같이 찍고 싶은 사진의 스케치를 카메라 어플 화면 위에 직접 띄워 구도에 대한 가이드를 제시한다 
- 카메라 초점, 밝기 등의 설정값을 제시하거나 직접 변경해 사용자에게 편의를 제공한다.

관련 기술의 현황

관련 기술의 현황 및 분석(State of art)

  • 전 세계적인 기술현황

◇ 디지털 화상처리 기술

 디지털 화상처리 기술은 방송과 영화 분야, 의료 산업 분야, 보안 응용 분야, 출판 및 문서 제작 분야, 과학 분야, 군사 분야, 우주 원격탐사 분야 등에 폭 넓게 사용되며, 앞으로 활용 분야는 더욱 확대될 것이다.

◇ Edge Detection

 에지(edge)라 함은 사전적 의미로는 가장자리, 끝, 모서리 또는 윤곽선을 뜻한다. 화상처리에서의 에지는 영상의 밝기가 낮은 값에서 높은 값으로 또는 그 반대로 변하는 지점에 존재하는 부분을 가리킨다. 에지를 검출하는 방법은 농도 변화 1차미분의 절대 값이 최대가 되는 위치 또는 농도 변화 2차미분이 제로 크로스(zero cross)하는 위치를 에지로 정의한다. 화상에서 에지 위치를 특정 하는 처리를 에지 검출 또는 에지 추출이라고 한다.
 에지는 영상에서 객체와 객체 사이의 경계를 나타내는 중요 정보로서 소벨(Sobel), 프르윗(Prewitt), 로버트(Roberts), 캐니(Canny) 등의 미분 연산자에 기반 하고 있는 다양한 에지 검출 기법이 있다. 그러나 이러한 기법들은 밝기 값 변화가 완만한 부분에서의 에지 검출에는 둔감하며, 한 픽셀의 두께로 이루어진 에지의 경우 2중 에지를 검출하는 문제점이 있다. 또한 에지를 검출하기 위해서는 효과적 에지 검출 연산자뿐만 아니라 적절한 임계값이 필수적이다.

◇ 차선검출 위한 환경 적응적인 캐니 에지 추출 방법

 최근 IT 기술이 융합된 지능형 자동차 기술에 대한 관심이 높아짐에 따라 이에 대한 연구가 활발히 진행되고 있다. 차선 검출은 지능형 자동차의 주요 과제인 첨단 안전자동차 기술의 핵심적인 부분으로 국내외에서 다양한 방법들에 대한 연구가 진행되었다. 차량의 안전을 향상시키기 위해서는 충분한 제동거리 확보가 가능한 거리까지 정확하고 빠른 차선 검출이 이루어 져야 한다. 기존의 경계선 검출기법들은 조명 변화에 따라 그 성능의 변화가 크게 발생하였다. 이는 차선과 도로의 사이의 값의 차이가 조명 조건에 따라 변하기 때문이다.
 참고한 논문에서는 영상 분석을 통하여 경계선을 판단하는 값을 조절함으로써 환경에 적응적인 경계선 추출 방법을 제안한다. 또한 차량 주행 영상에서 제안한 방법과 기존의 경계선 검출 기법을 적용하여 성능을 비교한다.

◇ 캐니 에지 검출 알고리즘을 이용한 접촉각 측정 기법

 접촉각을 이용한 표면에너지 측정방법은 부품소재분야를 비롯한 폴리머 화학제품 등에서 널리 사용되고 있다. 그중 측정할 대상 의 고체 표면에 액체 방울을 떨어뜨리고 측면 접점 방향에 대한 영상을 촬영하여 고체 표면과 액체 방울이 이루고 있는 각도를 측정하는 방식을 가장 많이 사용하고 있다.
 참고한 논문에서는 기존 접촉각 측정기의 배경과 액체 방울 사이의 명암 차를 이용하여 경계선을 찾는 Sessile-drop 영상처리 기법을 보완 및 개선하기 위하여 캐니 에지 검출 알고리즘을 적용하였다.

◇ 증강현실(AR) 카메라 앱 ‘SNOW 카메라’

 카메라 앱 스노우에는 알체라의 안면인식 기술이 그대로 적용됐다. 그리고 이 기술은 글로벌 시장에서도 ‘정교하다’는 평가를 받는다. 얼굴에 수백 개의 점을 찍는 게 분석의 시작이다. 이 점들에 입력된 이미지를 분석해 이 사람이 누구인지, 얼굴이 어떤 위치에 있는지 등을 분석한다. 자신의 얼굴에 AR 스티커를 붙일 수 있다는 점 때문에 글로벌 시장에서 눈길을 끌었다. 구형 스마트폰만 있어도 얼굴을 인식하고 AR 스티커를 부착할 수 있다. 정보 처리를 위한 서버나 클라우드를 쓰는 것도 아니다.
 해당 기업 알체라는 ‘애플 저격수’로도 불린다. 애플이 최고 사양 스마트폰인 아이폰X에서만 구현한 얼굴 인식과 AR 스티커 기능을 갤럭시S3 이후에 나온 모든 스마트폰에 구현했기 때문이다. 애플은 이 기능을 위해 스마트폰에 별도의 3차원(3D) 카메라를 넣었다.


  • 특허조사

◇ 에지 정보 기반의 객체 추적 알고리즘을 통한 이동 차량 탐지 시스템 및 방법(KR101717613B1)

◇ 이미지 에지 검출 방법 및 시스템(KR101169720B1)

◇ 이미지의 에지를 검출하는 화상 형성장치 및 그 방법(KR20070052088A)

◇ 에지 검출 및 보정항을 이용하여 컬러 필터 어레이의 색보간을 제공하는 방법 및 장치(KR101007754B1)

◇ 에지의 방향 성분을 검출하는 영상 필터링 방법 및 이를 이용한 영상 인식 방법(KR20130010181A)

◇ 360도 카메라를 이용한 증강현실 로봇 시뮬레이션 시스템 및 방법(WO2010110560A2)

◇ 사물 인터넷 기반의 실외형 자가촬영사진지원 카메라 시스템(WO2018092926A1)

◇ 스마트폰과 연동하여 차량의 문 열림을 검지하는 시스템 및 그 운용방법(KR101705042B1)


  • 특허전략

◇ 유사 소프트웨어가 특허 출원 되어 있는지 확인한 후, 차별점을 특정하여 특허로 출원할 수 있다.

◇ 유사 제품들과 실루엣 생성에 대한 접근법이 다르므로 비즈니스 모델 특허를 고려할 수 있다.

시장상황에 대한 분석

  • 경쟁제품 조사 비교


◇ SOVS – 구도 카메라

‘소브스(SOVS)’는 다른 사람에게 사진을 찍어달라고 부탁할 때 사용할 수 있는 카메라 앱이다. 사용자가 원하는 구도를 촬영 화면에 가이드라인으로 나타낸 후, 타인에게 ‘이대로 찍어주세요’라고 설명할 수 있는 특징을 가지고 있다. 스냅사진 4만4000여장을 분석해 사람들이 가장 많이 사용하는 17가지의 포즈를 실루엣으로 내장했다. 사용자가 원하는 배경과 구도를 화면상에 가이드라인으로 표현해, 타인이 본인을 촬영하는 상황을 제어할 수 있게 하는 것이 SOVS의 특징이다. 
 상세 기능들은 다음과 같다. 실루엣으로 내가 원하는 인물구도를 표현할 수 있다. 또한, 배경모드에서 사용자가 함께 찍히고 싶은 배경을 먼저 촬영하면 그 사진이 촬영화면에 반투명하게 나타난다. 이는 촬영자가 화면에 반투명하게 나타난 사진에 맞추어 찍을 수 있게 한다. 마지막으로, 인물필터와 배경에 최적화된 필터들도 제공한다.

◇ 포즈 Poze : 사진, 구도, 포토존 안내 카메라

 ‘Poze’라는 스타트업에서 출시한 구도, 포토존 안내 카메라이다. SOVS와의 차이는 포토존에 대한 정보와, 포토존 마다의 구도를 기본 제공한다. 전 세계 관광지 포즈 및 구도 가이드 모음을 제공한다. 예를 들어 호치민, 타이페이와 같은 유명 관광지에 대한 촬영 가이드들을 제공한다. 또한 포토스팟을 찾기 위한 지도 및 길찾기 기능도 내장하고 있다.

◇ GudoCam 구도캠 – 인공지능 구도 가이드라이너

 ‘GudoCam’이라는 스타트업에서 만든 카메라 앱이다. 이 앱은 인공지능을 통해 촬영자에게 현 화상에 가장 적합한 구도의 가이드라인을 제안하는 촬영 구도 가이드 카메라 앱이다. 구도는 3분할 법에 기반한 구도와 대표적으로 많이 사용되는 구도 총 14가지가 제공된다. 초보자는 구도에 대한 학습용으로, 사진구도에 대한 이해도를 가지고 있는 사용자는 정확한 비율 매칭에 이용할 수 있다.

◇ Edge Detection Camera Filter

 외국 앱 개발자가 만든 단순한 카메라 필터 앱이다. 카메라에 Edge Detection 필터를 적용하여 테두리만 나오는 사진을 찍을 수 있게 한다.

경쟁제품.PNG

◇ 프로젝트 아이디어와의 비교

 다음과 같은 점들에 차별성이 있다고 생각된다.
 1. 정해진 사진이나 구도로만 찍는 것이 아니라 사용자가 직접 따라찍을 사진을 선택한다.
 2. 투명화 된 배경이 아니라 스케치 위에 색칠하듯 촬영할 수 있어서 따라 찍는 것이 더 용이하다.


  • 마케팅 전략 제시

◇ 유명 카메라 앱에 애드온 형식으로 기술 판매를 통한 EXIT

 기술기업의 경우 과거 자체기술개발에 몰두했던 것에 비해 최근에는 신규시장 진출의 리스크를 줄이고 기술개발에 소요되는 시간을 줄이는 목적으로 소규모 M&A를 추진하는 경우가 많다. 위와 같은 시장의 상황을 고려하여, ‘SNOW 카메라’나 ‘SODA 캠’과 같은 유명 카메라 앱에 기술을 판매하는 것을 고려한다.

◇ SWOT 분석 Mgswot.PNG

개발과제의 기대효과

기술적 기대효과

◇ 빅데이터

 사용자들의 데이터를 바탕으로 현재 인기 있는 사진 촬영지 데이터를 확보할 수 있다.

◇ 이식성

 기본 카메라 앱뿐만이 아니라 다른 카메라 어플과도 함께 쓰일 수 있어 이식성을 갖춘다. 

경제적, 사회적 기대 및 파급효과

◇ 사용성

 접근성이 좋은 스마트폰 앱을 통해 쉽게 조작할 수 있는 인터페이스를 구현하여 일반인이 제약 없이 사용할 수 있다.

기술개발 일정 및 추진체계

개발 일정

Mgroadmap.PNG

구성원 및 추진체계

◇ 도*찬 – 프로젝트 전체 기획과 더불어, 프로토타입 개발을 주도한다.


◇ 김*식 – 이미지 EDGE Detection 기술에 대해 조사 및 적용 체계를 주도한다.


◇ 박*근 – 이미지 메타데이터 분석 기술을 선행 조사하며, 구글 Map Api와의 연동 진행을 주도한다.


◇ 하*민 – 소프트웨어 설계와 형상 관리, 개발 모델의 테스트를 주도한다.

설계

설계사양

제품의 요구사항

조재훈팀 사용자요구사항.PNG

설계 사양

조재훈팀 목적계통도.PNG

개념설계안

조재훈팀 기능정의.PNG


조재훈팀 기능별정량목표.PNG


◇ OpenCV : 실시간 컴퓨터 비전을 목적으로 한 프로그래밍 라이브러리로 내장된 함수인 Canny Edge Detection을 이용하여 받아온 사진에서 선을 검출해낸다. C++의 코드 라이브러리를 JNI를 이용하여 자바 기반의 안드로이드에서 사용하도록 하였다.
◇ Google Map API : 구글에서 지원하는 지도 API로 위도, 경도의 위치 데이터를 이용하여 지도에서 표시한다.
◇ Flicker API : 야후에서 운영하는 온라인 사진 공유 커뮤니티 사이트로 태그를 사용하여 사진들을 분류하고 이것을 종합하여 API로 제공하고 있다.
◇ User : App User는 기존의 앨범 또는 Flicker의 태그 기능을 통해 원하는 사진을 찾아내어 Edge를 검출하게 된다. 카메라 위에 오버레이된 Edge를 따라 카메라를 촬영하고 저장된 이미지를 확인할 수 있다.

이론적 계산 및 시뮬레이션

◇ Gaussian 필터 적용

이미지 픽셀이 입력되고 Nosie로 인하여 잘못된 Edge 검출을 막기 위해 가우시안 필터를 적용한다.

조재훈팀 이론계산1.PNG

◇ Sobel 적용

G를 구해 내고, G의 방향성도 구하여 반올림하여 0, 45, 90, 135 도 4방향으로 Data를 가진다. 이 방향은 Non-Maximum 을 적용하기 위해 필요하다.

조재훈팀 이론계산2.PNG

◇ non-maximum 적용

가우시안 필터를 적용으로 이미지의 edge가 옅어져 있을 수 있기 때문에 G값과 방향을 이용하여, Local Maximum 값만 남기고 나머지는 버리는 방법이다.

예를 들어, 이미지의 G값을 표현한 a 라는 이미지에서 3X3행렬만큼 이동하면서 Local Maximum을 찾는 방법이다.

  • 이미지 b에서 10의 방향이 90도 이면 남과 북(7,2) 값보다 크므로 10은 남기고,
  • 이미지 c에서 5의 방향이 0도 이므로 동과 서(5,10)값보다 작으므로 5는 날린다.
  • 이미지 d에서 5의 방향이 45도 이므로 대각선 방향(4,1) 보다 크므로 5를 남기는 방법이다.

조재훈팀 이론계산3.PNG

◇ Hysteresis 적용

Canny는 두 가지 임계 값 (위쪽 및 아래쪽)을 사용한다.

  1. G 값이 상한 임계 값보다 높으면 픽셀을 에지로 받아들인다.
  2. G 값이 하위 임계 값보다 낮으면 거부된다.
  3. G 값이 두 임계 값 사이에 있으면 상단 임계 값보다 높은 픽셀에 연결된 경우에만 받아 들여진다.

조재훈팀 이론계산4.PNG

◇ overlay 적용

추출된 edge를 카메라 위에 overlay한다.

상세설계 내용

소프트웨어 설계

조재훈팀 소프트웨어설계1.PNG

◇ Android Studio를 사용하여 안드로이드 어플리케이션을 제작한다.

◇ 많은 양의 사진들과 사진의 데이터는 flickr의 open API 키를 발급받아 사용한다.

◇ 원하는 장소의 사진들을 검색하기 위해서 flickr.photos.search 메소드를 사용한다.


조재훈팀 소프트웨어설계2.PNG

◇ 원하는 장소를 text로 입력하고 발급 키, 출력형태 등의 여러 가지 인수를 포함시킨다.

조재훈팀 소프트웨어설계3.PNG

◇ Rest요청을 통하여 JSON형태로 사진 리스트를 획득한다.

조재훈팀 소프트웨어설계4.PNG

◇ 선택한 사진의 메타데이터인 EXIF정보를 획득하기 위해 flickr.photos.getExif 메소드를 사용한다.

조재훈팀 소프트웨어설계5.PNG

◇ EXIF데이터들 중에서 GPS정보 같은 필요한 부분만 추출한다.

조재훈팀 소프트웨어설계6.PNG

◇ GPS정보를 geopoint로 변환한 후 Google Map API 키를 발급받고 사용하여 지도에 표시한다.

조재훈팀 소프트웨어설계7.PNG

◇ 선택한 사진의 Edge를 추출하여 틀을 만들기 위해 OpenCV를 사용한다.

◇ CannyEdgeDetection 방법을 통해 Edge만 추출한 후 배경은 투명설정하여 가이드라인을 만든다.

조재훈팀 소프트웨어설계8.PNG

◇ 카메라 기능을 제작하여 카메라 SurfaceView 위에 가이드라인 이미지를 오버레이 한다.

◇ 촬영한 사진이 저장된다.

UI 정의

조재훈팀 UIflow.png

메뉴 구성

조재훈팀 메뉴구성.PNG

화면 목록

조재훈팀 화면목록.PNG

유즈케이스

조재훈팀 유즈케이스.PNG

기능설명

조재훈팀 기능설명.PNG

결과 및 평가

완료 작품의 소개

프로토타입 사진 혹은 작동 장면

조 작품설명.png

포스터

조 포스터.jpg

관련사업비 내역서

조 관련사업비.png

완료작품의 평가

조 평가.png

향후계획

  • 어려웠던 내용
    • 메타 데이터가 포함된 사진 검색 및 수집
      • 위치 정보나 카메라 설정 값들이 포함되어 있는 사진을 찾기 위해, Flicker API에서 해당 정보들이 담긴 사진만을 추출했다.
    • Git Flow 관리
      • 수월한 협업을 위해 Git과 Github를 사용하였다. 능숙하지 못한 팀원들을 위해 Git Kraken GUI 툴을 도입하여 편리하게 Git Flow를 관리하였다.
    • 사진 EXIF 정보 가져오기
    • 카메라 모듈 직접 구현
      • 기본 휴대폰 카메라 어플에는 화면 상에 엣지 검출 완료된 사진을 오버레이하는 것이 어려워, 카메라 모듈을 직접 구현했다.
    • 카메라 화면 위에 이미지 오버레이
    • 엣지 배경 투명화
    • 이미지 로딩
      • RESTful API를 통해서 이미지를 로딩함에 있어서 전통적인 이미지 로딩 어려움을 겪었다. 따라서 Glide라는 이미지 로딩 오픈소스 라이브러리를 사용했다. 이를 통해 HTTP 통신을 안정되게 구현하고, 비트맵으로 디코딩하는 과정에서 메모리가 넘치거나 새지 않도록 관리했다.
    • 효율적인 이미지 RecyclerView
      • 처음에 ListView로 구현했으나 사용성에 있어서 부족함을 보였다. 따라서 한번 사용했던 객체를 뒤에 재사용하여 메모리를 효율적으로 사용할 수 있는 RecyclerView로 교체했다.
  • 차후 구현할 내용
    • GPS 정보가 없는 사진들도 제공
      • 현재는 Flicker에 업로드 되어있는 사진들 중 위치 정보가 담겨 있는 사진만을 제공한다. 하지만 사용자가 원할 경우 지도 정보가 없는 사진도 불러올 수 있도록 개선한다.
    • 카메라 비율 변경
    • 사진 종류마다 엣지 알고리즘 적용도 변경
      • 현재 엣지 추출된 이미지의 크기에 따라 카메라 화면과 맞지 않는 이슈가 있다. 이 이슈들을 해결한다.
    • 케니 엣지 외에 다른 엣지 알고리즘 적용(HNED와 같은)
      • 현재 적용된 케니 엣지 알고리즘은 그 결과물이 이 앱에 사용하기에 아름답지 못하다. 조금 더 손으로 그린 스케치 느낌이 날 수 있게 다른 엣지 알고리즘의 도입을 검토한다.
    • 사진 EXIF 정보로 카메라 설정값 업데이트

특허 출원 내용

  • 특허조사
    • 에지 정보 기반의 객체 추적 알고리즘을 통한 이동 차량 탐지 시스템 및 방법(KR101717613B1)
    • 이미지 에지 검출 방법 및 시스템(KR101169720B1)
    • 이미지의 에지를 검출하는 화상 형성장치 및 그 방법(KR20070052088A)
    • 에지 검출 및 보정항을 이용하여 컬러 필터 어레이의 색보간을 제공하는 방법 및 장치(KR101007754B1)
    • 에지의 방향 성분을 검출하는 영상 필터링 방법 및 이를 이용한 영상 인식 방법(KR20130010181A)
    • 360도 카메라를 이용한 증강현실 로봇 시뮬레이션 시스템 및 방법(WO2010110560A2)
    • 사물 인터넷 기반의 실외형 자가촬영사진지원 카메라 시스템(WO2018092926A1)
    • 스마트폰과 연동하여 차량의 문 열림을 검지하는 시스템 및 그 운용방법(KR101705042B1)
  • 특허전략
    • 유사 소프트웨어가 특허 출원 되어 있는지 확인한 후, 차별점을 특정하여 특허로 출원할 수 있다.
    • 유사 제품들과 실루엣 생성에 대한 접근법이 다르므로 비즈니스 모델 특허를 고려할 수 있다.