KR102606373B1 - 영상에서 검출되는 얼굴의 랜드마크를 조절하기 위한 방법 및 장치 - Google Patents
영상에서 검출되는 얼굴의 랜드마크를 조절하기 위한 방법 및 장치 Download PDFInfo
- Publication number
- KR102606373B1 KR102606373B1 KR1020230054193A KR20230054193A KR102606373B1 KR 102606373 B1 KR102606373 B1 KR 102606373B1 KR 1020230054193 A KR1020230054193 A KR 1020230054193A KR 20230054193 A KR20230054193 A KR 20230054193A KR 102606373 B1 KR102606373 B1 KR 102606373B1
- Authority
- KR
- South Korea
- Prior art keywords
- video
- area
- person
- node
- image
- Prior art date
Links
- 230000001815 facial effect Effects 0.000 title claims abstract description 35
- 238000000034 method Methods 0.000 title claims description 51
- 238000003672 processing method Methods 0.000 claims abstract description 7
- 238000012545 processing Methods 0.000 claims description 82
- 230000009466 transformation Effects 0.000 claims description 45
- 230000006870 function Effects 0.000 claims description 22
- 238000000605 extraction Methods 0.000 claims description 11
- 230000001131 transforming effect Effects 0.000 claims description 5
- 210000004709 eyebrow Anatomy 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 4
- 230000008685 targeting Effects 0.000 claims 1
- 238000004422 calculation algorithm Methods 0.000 description 54
- 238000004891 communication Methods 0.000 description 23
- 239000002245 particle Substances 0.000 description 22
- 230000033001 locomotion Effects 0.000 description 20
- 230000008569 process Effects 0.000 description 16
- 238000001514 detection method Methods 0.000 description 8
- 238000012986 modification Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 6
- 239000011159 matrix material Substances 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000014509 gene expression Effects 0.000 description 5
- 239000000463 material Substances 0.000 description 5
- 239000013598 vector Substances 0.000 description 5
- 241000282326 Felis catus Species 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 210000000887 face Anatomy 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 238000012800 visualization Methods 0.000 description 4
- 239000003086 colorant Substances 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 238000000844 transformation Methods 0.000 description 3
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 2
- 241000109849 Leopardus jacobita Species 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000004049 embossing Methods 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 239000003973 paint Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 241000226585 Antennaria plantaginifolia Species 0.000 description 1
- 241000283070 Equus zebra Species 0.000 description 1
- GWEVSGVZZGPLCZ-UHFFFAOYSA-N Titan oxide Chemical compound O=[Ti]=O GWEVSGVZZGPLCZ-UHFFFAOYSA-N 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000740 bleeding effect Effects 0.000 description 1
- 238000007664 blowing Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 210000005069 ears Anatomy 0.000 description 1
- 238000003708 edge detection Methods 0.000 description 1
- 230000003628 erosive effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 210000003128 head Anatomy 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000031700 light absorption Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000036548 skin texture Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000011426 transformation method Methods 0.000 description 1
- 238000003079 width control Methods 0.000 description 1
- 210000000216 zygoma Anatomy 0.000 description 1
Classifications
-
- G06T3/0006—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/0482—Interaction with lists of selectable items, e.g. menus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/60—Editing figures and text; Combining figures or text
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/16—Human faces, e.g. facial parts, sketches or expressions
- G06V40/168—Feature extraction; Face representation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10016—Video; Image sequence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30196—Human being; Person
- G06T2207/30201—Face
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Health & Medical Sciences (AREA)
- Oral & Maxillofacial Surgery (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Health & Medical Sciences (AREA)
- Multimedia (AREA)
- Image Processing (AREA)
Abstract
본 발명은 영상에서 검출되는 얼굴의 랜드마크를 조절하기 위한 것으로, 영상 처리 방법은, 사용자에 의해 선택된 제1 동영상의 하나의 프레임을 표시하는 단계, 상기 제1 동영상의 상기 프레임에서 인물의 얼굴 영역 및 상기 얼굴의 랜드마크들을 검출하는 단계, 상기 프레임 상에 상기 랜드마크들의 위치를 표시하는 지시자들을 표시하는 단계, 상기 랜드마크들 각각에 대한 조절 값들을 입력하기 위한 제1 인터페이스를 표시하는 단계, 상기 제1 인터페이스를 통해 입력되는 상기 조절 값들에 따라 상기 프레임에서 상기 랜드마크들을 변형함으로써 상기 인물의 얼굴 영상을 변형하는 단계, 상기 동영상 내의 모든 프레임들에 대하여 상기 조절 값들에 따라 변형된 인물의 얼굴 영상들을 포함하는 제2 동영상을 생성하는 단계를 포함할 수 있다.
Description
본 발명은 영상 처리에 관한 것으로, 보다 구체적으로 영상에서 검출되는 얼굴의 랜드마크를 조절하기 위한 방법 및 장치에 관한 것이다.
최근 공중파 TV(television), 케이블 TV를 넘어 OTT(over the top)와 같이 드라마, 영화 등과 같은 영상 콘텐츠의 수요 및 공급이 폭발적으로 증가하고 있다. 예를 들어, 1년 간 약 100여 편 이상의 국내 드라마들이 제작되고 있다. 카메라를 통해 촬영된 영상은 보정, 편집 등의 처리 과정을 거쳐 완성된 콘텐츠로 만들어진다.
영상에 대한 처리는 다양한 목적에 따라 수행될 수 있다. 예를 들어, 영상의 품질을 향상시키기 위해, 인물의 모습을 보다 보기 좋기 하기 위해, 또는 인물을 다른 인물로 보이게 하기 위해 영상이 처리될 수 있다. 여기서, 인물을 다른 인물로 보이게 하는 기술로는 딥페이크(deepfake), 페이스 리플레이스먼트(face replacement) 등의 기술들이 존재한다. 이 기술들은 인물의 얼굴을 새로운 얼굴로 교체하게 한다.
본 발명은 편리하고, 직관적인 인터페이스를 이용하여 영상 내의 인물의 얼굴을 처리하기 위한 방법 및 장치를 제공한다.
본 발명은 편리하고, 영상 내의 인물의 얼굴을 조명, 색 온도 등의 빛과 피부 질감 등을 보존하면서 변형하기 위한 방법 및 장치를 제공한다.
본 발명은 영상에서 검출되는 인물의 얼굴의 랜드마크를 조절하기 위한 방법 및 장치를 제공한다.
본 발명은 영상에서 검출되는 인물의 얼굴의 랜드마크들의 크기, 모양, 간격 또는 비율을 조절하기 위한 방법 및 장치를 제공한다.
본 발명의 실시 예에 따르면, 영상 처리 방법은, 사용자에 의해 선택된 제1 동영상의 하나의 프레임을 표시하는 단계, 상기 제1 동영상의 상기 프레임에서 인물의 얼굴 영역 및 상기 얼굴의 랜드마크들을 검출하는 단계, 상기 프레임 상에 상기 랜드마크들의 위치를 표시하는 지시자들을 표시하는 단계, 상기 랜드마크들 각각에 대한 조절 값들을 입력하기 위한 제1 인터페이스를 표시하는 단계, 상기 제1 인터페이스를 통해 입력되는 상기 조절 값들에 따라 상기 프레임에서 상기 랜드마크들을 변형함으로써 상기 인물의 얼굴 영상을 변형하는 단계, 상기 동영상 내의 모든 프레임들에 대하여 상기 조절 값들에 따라 변형된 인물의 얼굴 영상들을 포함하는 제2 동영상을 생성하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 방법 및 장치는 보다 편리하고, 직관적으로 영상 콘텐츠의 처리를 가능하게 한다.
도 1은 본 발명의 실시 예에 따른 영상 처리를 위한 시스템을 도시한다.
도 2는 본 발명의 실시 예에 따른 사용자 장치의 구조를 도시한다.
도 3은 본 발명의 실시 예에 따른 서버의 구조를 도시한다.
도 4는 본 발명의 실시 예에 따른 영상 처리 절차를 도시한다.
도 5는 본 발명의 실시 예에 따른 동영상에서 인물의 얼굴 영상을 변형하는 절차를 도시한다.
도 6은 본 발명의 실시 예에 따른 얼굴 인식 모듈의 구조를 도시한다.
도 7는 본 발명의 실시 예에 따른 얼굴의 랜드마크들에 대한 지시자를 표시하는 절차를 도시한다.
도 8은 본 발명의 실시 예에 따른 얼굴의 특징점들의 검출 결과의 예를 도시한다.
도 9는 본 발명의 실시 예에 따른 랜드마크를 변형하는 절차를 도시한다.
도 10은 본 발명의 실시 예에 따라 랜드마크가 축소되는 상황의 예를 도시한다.
도 11은 본 발명의 실시 예에 따른 동영상에서 다수의 인물들의 얼굴들을 변형하는 절차를 도시한다.
도 12a 내지 도 12h는 본 발명의 실시 예에 따라 원본 동영상으로부터 얼굴 변형된 동영상을 획득하는 과정의 인터페이스들의 예를 도시한다.
도 13은 본 발명의 실시 예에 따른 얼굴 변형 알고리즘 및 영상 처리 툴 간 연동하는 구조를 도시한다.
도 14는 본 발명의 실시 예에 따른 노드 기반 그래프의 예를 도시한다.
도 15는 본 발명의 실시 예에 따른 영상 처리를 위한 툴의 인터페이스를 도시한다.
도 16은 본 발명의 실시 예에 따른 영상 처리 절차를 도시한다.
도 17은 본 발명의 실시 예에 따라 영상 처리 툴을 이용하여 추가적인 가공을 수행하기 위한 그래프의 예를 도시한다.
도 2는 본 발명의 실시 예에 따른 사용자 장치의 구조를 도시한다.
도 3은 본 발명의 실시 예에 따른 서버의 구조를 도시한다.
도 4는 본 발명의 실시 예에 따른 영상 처리 절차를 도시한다.
도 5는 본 발명의 실시 예에 따른 동영상에서 인물의 얼굴 영상을 변형하는 절차를 도시한다.
도 6은 본 발명의 실시 예에 따른 얼굴 인식 모듈의 구조를 도시한다.
도 7는 본 발명의 실시 예에 따른 얼굴의 랜드마크들에 대한 지시자를 표시하는 절차를 도시한다.
도 8은 본 발명의 실시 예에 따른 얼굴의 특징점들의 검출 결과의 예를 도시한다.
도 9는 본 발명의 실시 예에 따른 랜드마크를 변형하는 절차를 도시한다.
도 10은 본 발명의 실시 예에 따라 랜드마크가 축소되는 상황의 예를 도시한다.
도 11은 본 발명의 실시 예에 따른 동영상에서 다수의 인물들의 얼굴들을 변형하는 절차를 도시한다.
도 12a 내지 도 12h는 본 발명의 실시 예에 따라 원본 동영상으로부터 얼굴 변형된 동영상을 획득하는 과정의 인터페이스들의 예를 도시한다.
도 13은 본 발명의 실시 예에 따른 얼굴 변형 알고리즘 및 영상 처리 툴 간 연동하는 구조를 도시한다.
도 14는 본 발명의 실시 예에 따른 노드 기반 그래프의 예를 도시한다.
도 15는 본 발명의 실시 예에 따른 영상 처리를 위한 툴의 인터페이스를 도시한다.
도 16은 본 발명의 실시 예에 따른 영상 처리 절차를 도시한다.
도 17은 본 발명의 실시 예에 따라 영상 처리 툴을 이용하여 추가적인 가공을 수행하기 위한 그래프의 예를 도시한다.
이하 본 발명의 바람직한 실시 예를 첨부된 도면의 참조와 함께 상세히 설명한다. 그리고, 본 발명을 설명함에 있어서, 관련된 공지기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단된 경우, 그 상세한 설명은 생략한다.
본 발명은 영상 콘텐츠에서 인물의 얼굴 영상을 변형하기 위한 기술에 한 것이다. 구체적으로, 본 발명은 인물의 얼굴의 랜드마크(landmark)들, 예를 들어, 눈, 눈썹, 코, 입, 턱 등의 크기, 비율, 간격, 모양 등을 수정하기 위한 기술에 관한 것이다. 특히, 본 발명의 실시 예들은 단일 영상은 물론 동영상(video)에 대해 적용될 수 있으며, 동영상을 구성하는 복수의 프레임들에 대하여 동일한 내용의 변형을 일괄적으로 적용하는 것을 가능하게 한다.
도 1은 본 발명의 실시 예에 따른 영상 처리를 위한 시스템을 도시한다.
도 1을 참고하면, 사용자 장치(110) 및 서버(120)는 통신망에 접속한다. 통신망을 통해, 사용자 장치(110) 및 서버(120)는 상호 통신을 수행할 수 있다.
사용자 장치(110)는 본 발명의 실시 예에 따른 영상 처리 툴을 실행하며, 사용자와 상호작용한다. 즉, 본 발명의 실시 예에 따른 영상 처리를 위한 프로그램 또는 툴이 사용자 장치(110)에 설치되어 있다. 필요에 따라, 사용자 장치(110)는 통신망에 접속할 수 있고, 통신망을 통해 서버(120)와 통신할 수 있다. 여기서, 통신망은 유선 망 또는 무선 망을 포함할 수 있다.
서버(120)는 사용자 장치(110)의 영상 처리를 위한 연산에 필요한 정보를 제공하거나 또는 연산의 일부를 처리할 수 있다. 이를 위해, 서버(120)는 통신망을 통해 사용자 장치(110)와 데이터를 송신 및 수신할 수 있다. 다만, 다른 실시 예에 따라, 서버(120) 및 통신망은 본 발명의 실시를 위해 사용되지 아니할 수 있다.
도 2는 본 발명의 실시 예에 따른 사용자 장치의 구조를 도시한다.
도 2를 참고하면, 사용자 장치(110)는 입력부(210), 출력부(220), 통신부(230), 저장부(240), 제어부(250)를 포함한다.
입력부(210)는 사용자의 명령을 입력하기 위한 수단을 포함한다. 입력부(210)는 다양한 형태의 사용자 입력을 감지하고, 감지된 입력을 신호로 변환하고, 변환된 신호를 제어부(250)로 전달한다. 예를 들어, 입력부(210)는 마우스, 키보드, 터치패널, 버튼, 마이크, 입력부, 센서 중 적어도 하나를 포함할 수 있다.
출력부(220)는 데이터, 정보, 알림 등을 출력하는 수단을 포함한다. 출력부(220)는 제어부(250)로부터 제공되는 데이터 또는 신호에 기반하여 사용자의 오감을 이용하여 인지할 수 있는 출력물을 생성한다. 여기서, 출력물은 빛, 소리 등을 포함할 수 있다. 예를 들어, 출력부(220)는 모니터, 스피커, LED 등 중 적어도 하나를 포함할 수 있다. 경우에 따라, 입력부(210) 및 출력부(220)는 하나의 주변장치로 결합될 수 있다.
통신부(230)는 외부 통신망에 접속하고, 데이터/신호/정보를 송신 및 수신하기 위한 기능을 수행한다. 예를 들어, 통신부(230)는 인터넷 망, 무선 통신망, 모바일 통신망 등에 접속하는 기능을 수행할 수 있다. 이를 위해, 통신부(230)는 신호의 변복조, 증폭, 필터링 등의 기능을 수행한다. 통신부(230)는 무선 랜 통신(예: 와이파이), 셀룰러 통신(예: LTE, 5G) 등의 통신 기술을 지원할 수 있다. 다른 실시 예에 따라, 통신부(230)는 사용자 장치(110)에 포함되지 아니할 수도 있다.
저장부(240)는 사용자 장치(110)의 동작을 위해 필요한 데이터, 프로그램, 마이크로 코드, 어플리케이션 등을 저장한다. 특히, 저장부(240)는 영상 처리를 위패 필요한 프로그램, 설정 데이터, 영상 데이터 등을 저장할 수 있다. 저장부(240)는 일시적 또는 비일시적 저장 매체로 구현될 수 있다. 또한, 저장부(240)는 장치에 고정되어 있거나, 또는 분리 가능한 형태로 구현될 수 있다.
제어부(250)는 사용자 장치(110)의 전반적인 동작을 제어한다. 제어부(250)는 프로세서, 마이크로 프로세서 중 적어도 하나를 포함할 수 있다. 제어부(250)는 입력부(210)를 통해 사용자의 입력을 감지하고, 출력부(210)를 통해 사용자에게 시각적으로 정보를 표현할 수 있다. 제어부(250)는 통신부(230)를 통해 외부 장치와 데이터를 송신 또는 수신하고, 저장부(240)에 저장된 프로그램을 실행할 수 있다. 특히, 제어부(260)는 사용자 장치(110)가 후술되는 다양한 실시 예들에 따라 동영상에서 인물의 얼굴 영상을 변형하는 알고리즘(이하 '얼굴 변형 알고리즘')을 실행하도록 제어한다.
도 3은 본 발명의 실시 예에 따른 서버의 구조를 도시한다.
도 3을 참고하면, 서버(120)는 통신부(310), 저장부(320), 제어부(330)를 포함한다.
통신부(310)는 외부 장치와 통신을 수행하기 위한 기능을 수행한다. 통신부(310)는 유선 통신을 지원할 수 있다. 저장부(320)는 서버(120)의 동작을 위해 필요한 데이터, 프로그램, 마이크로 코드, 어플리케이션 등을 저장한다. 저장부(320)는 일시적 또는 비일시적 저장 매체로 구현될 수 있다. 또한, 저장부(320)는 장치에 고정되어 있거나, 또는 분리 가능한 형태로 구현될 수 있다.
제어부(330)는 서버(120)의 전반적인 동작을 제어한다. 제어부(330)는 프로세서, 마이크로 프로세서 중 적어도 하나를 포함할 수 있다. 제어부(330)는 저장부(320)에 저장된 프로그램을 실행하고, 통신부(310)를 통해 외부 장치와 데이터를 송신 또는 수신할 수 있다. 특히, 제어부(330)는 서버(120)가 후술하는 다양한 실시 예들에 따라 동작하도록 제어한다.
도 4는 본 발명의 실시 예에 따른 영상 처리 절차를 도시한다. 도 4은 영상을 처리하는 장치(예: 사용자 장치(110))의 동작들의 예를 보여준다.
도 4를 참고하면, 401 단계에서, 장치는 입력 동영상을 표시한다. 사용자가 불러오기 메뉴를 동영상 파일을 선택하면, 장치는 사용자에 의해 선택된 동영상을 로딩하고, 표시할 수 있다. 이때, 장치는 동영상의 특정 프레임(예: 첫번째 프레임)을 표시할 수 있다.
402 단계에서, 장치는 얼굴의 랜드마크들에 대한 조절 값들을 확인한다. 이를 위해, 장치는 조절 값들을 입력하기 위한 인터페이스를 표시한다. 사용자는 인터페이스를 통해 랜드마크들 각각에 대한 조절 값들을 입력할 수 있고, 장치는 입력된 조절 값들을 확인할 수 있다. 또는, 장치는 사전에 정의된 조절 값들의 세트(set)들 중 하나를 확인할 수 있다.
403 단계에서, 장치는 조절 값들에 따라 얼굴의 랜드마크들 중 적어도 하나를 변형한다. 동영상은 복수의 프레임들, 즉, 복수의 영상들을 포함하므로, 장치는 확인된 조절 값들을 복수의 프레임들에 대하여 일괄적으로 적용한다. 이에 따라, 조절 값들에 따라 변형된 인물의 얼굴이 동영상 전체에 대하여 적용된다.
도 5는 본 발명의 실시 예에 따른 동영상에서 인물의 얼굴 영상을 변형하는 절차를 도시한다. 도 5는 영상을 처리하는 장치(예: 사용자 장치(110))의 동작들의 예를 보여준다.
도 5를 참고하면, 501 단계에서, 장치는 동영상에서 얼굴 영역 및 얼굴의 랜드마크들을 트랙킹(tracking)한다. 구체적으로, 장치는 동영상의 프레임에서 얼굴 영역을 검출하고, 얼굴 영역 내의 얼굴의 외곽선, 눈, 코, 입 등의 랜드마크들을 검출하고, 검출된 랜드마크들의 위치를 지시하는 지시자들을 표시할 수 있다. 이를 위해, 장치는 얼굴 인식 모듈을 이용하여 얼굴 영역 및 랜드마크들을 검출할 수 있다.
502 단계에서, 장치는 동영상의 프레임들에서 얼굴 영역을 크롭핑(croping)한다. 이를 통해, 영상의 나머지 영역이 연산에서 배제됨으로써, 연산량이 감소하고, 연산 속도가 향상될 수 있다. 다만, 연산을 위해 얼굴 영역이 크롭핑될 뿐, 장치는 프레임의 전체를 표시할 수 있다. 이 경우, 사용자에게 보여지는 동영상의 프레임들은 변화되지 아니할 수 있다.
503 단계에서, 장치는 조절 값들을 입력하기 위한 인터페이스를 표시한다. 인터페이스는 동영상의 일 프레임과 함께 표시되며, 표시되는 프레임을 선택하기 위한 버튼들(예: 프레임 앞으로 이동 버튼, 프레임 뒤로 이동 버튼), 랜드마크 별 조절 값을 입력하기 위한 항목, 변형의 적용을 명령하기 위한 변형 명령 버튼, 변형의 내용의 동영상 전체 적용을 명령하기 위한 추출 명령 버튼을 포함할 수 있다. 사용자는 인터페이스를 통해 조절 값들을 입력할 수 있으며, 입력된 조절 값들은 인터페이스에서 실시간으로 표시된다.
504 단계에서, 장치는 변형 명령이 발생하는지 판단한다. 장치는 인터페이스에 포함되는 변형 명령 버튼에 대한 사용자의 선택(예: 클릭, 터치)을 검출함으로써 변형 명령의 발생을 확인한다. 변형 명령이 발생하지 아니하면, 506 단계가 진행되며, 504 단계 및 506 단계는 본 절차의 종료 전까지 반복적으로 수행된다.
변형 명령이 발생하면, 505 단계에서, 장치는 조절 값들을 확인하고, 표시 중인 프레임에 조절 값들을 적용한다. 즉, 변형 명령의 발생이 확인되면, 장치는 변형 명령이 발생하는 시점에 인터페이스를 통해 입력되어 있는 조절 값들을 확인한다. 그리고, 장치는 현재 표시된 프레임에서 얼굴의 랜드마크들을 중 적어도 하나를 확인된 조절 값들에 따라 변형 및 표시한다. 예를 들어, 랜드마크들의 크기, 간격, 넓이 중 적어도 하나가 조절될 수 있다. 이를 통해, 사용자는 원하는 정도로 랜드마크들에 대한 변형이 가해지는지 여부를 확인하고, 필요에 따라 조절 값들을 정정할 수 있다. 이를 위해, 사용자의 조작에 따라, 504 단계 및 505 단계가 반복될 수 있다.
506 단계에서, 장치는 추출 명령이 발생하는지 판단한다. 장치는 인터페이스에 포함되는 추출 명령 버튼에 대한 사용자의 선택(예: 클릭, 터치)을 검출함으로써 추출 명령의 발생을 확인한다. 추출 명령이 발생하지 아니하면, 504 단계가 진행되며, 504 단계 및 506 단계는 본 절차의 종료 전까지 반복적으로 수행된다.
추출 명령이 발생하면, 507 단계에서, 장치는 동영상 전체에 조절 값들을 적용한다. 즉, 장치는 입력된 조절 값들을 동영상의 모든 프레임들에 적용하고, 조절 값에 따라 변형된 동영상을 출력한다. 다시 말해, 장치는 조절 값들에 따라 변형된 얼굴 영상의 랜드마크들을 랜더링한다. 이때, 앞서 변형 명령이 발생하지 아니한 경우, 조절 값들은 기본 값(예: 0)으로 설정되어 있으므로, 변형이 이루어지지 아니할 수 있다.
508 단계에서, 장치는 변형된 얼굴 영상을 포함하는 동영상 파일을 생성한다. 즉, 장치는 변형된 적어도 하나의 랜드마크를 포함하는 얼굴 영역으로 이루어진 인물의 영상을 생성한다. 랜드마크들에 대한 변형은 크롭된 얼굴 영역에 대해 수행되었으므로, 장치는 변형된 얼굴 영상 영역을 원본 동영상에 결합한다. 이에 따라, 원본 동영상의 인물과 다르게 보이는 인물의 동영상이 얻어질 수 있다. 이때, 앞서 변형 명령이 발생하지 아니한 경우, 조절 값들은 기본 값(예: 0)으로 설정되어 있으므로, 얻어지는 동영상은 원본과 동일할 수 있다.
전술한 절차들에서, 얼굴의 랜드마크들을 검출하기 위해 얼굴 인식 모듈이 사용될 수 있다. 여기서, 얼굴 인식 모듈은 영상 처리 툴과 별도로 존재하는 모듈일 수 있으며, 연동을 통해 본 발명의 실시 예에 따른 영상 처리를 위해 사용될 수 있다. 이에 따라, 얼굴 인식 모듈의 독립성이 부여되며, 얼굴 인식 모듈이 변경되더라도, 변경된 얼굴 인식 모듈은 영상 처리 툴의 변경 없이도 연동 과정을 통해 본 발명의 실시 예에 따른 영상 처리를 위해 사용될 수 있다. 더욱이, 별도로 제3자에 의해 개발된 알고리즘을 얼굴 인식 모듈로서 사용하는 것도 가능하다.
얼굴 인식 모듈은 다양하게 정의될 수 있는데, 그 일 예는 아래의 도 6과 같다. 도 6은 본 발명의 실시 예에 따른 얼굴 인식 모듈의 구조를 도시한다. 도 6은 얼굴 인식 모듈의 기능적 구조의 예를 보여준다.
도 6을 참고하면, 얼굴 인식 모듈은 랜드마크 검출 블록(610), 축 인식 블록(620), 영상 크롭 블록(630), 특징점 검출 블록(640)을 포함한다. 랜드마크 검출 블록(610)은 입력되는 영상에서 인물의 얼굴에 대한 바인딩 사각형(bounding rectangle)을 생성하고, 바인딩 사각형 내에서 눈의 중심, 귀, 코끝 등의 랜드마크들을 검출한다. 축 인식 블록(610)은 검출된 눈의 중심, 귀, 코끝 등에 기반하여 얼굴의 각도를 결정하고, 결정된 각도에 따라 얼굴의 중심축을 인식한다. 이에 따라, 바인딩 사각형이 축에 맞추어 회전할 수 있다. 영상 크롭 블록(630)은 영상 내에서 얼굴 외 나머지 부분을 제외하도록 얼굴을 중심으로 영상을 크롭한다. 예를 들어, 크롭은 바인딩 사각형에 대해 수행될 수 있다. 특징점 검출 블록(640)은 크롭된 결과물에서 특징점들을 검출한다. 특징점은 눈의 중심, 귀, 코끝을 중심으로 얼굴 내의 지정된 위치들을 지시한다.
도 6에 예시된 구조에서, 랜드마크 검출 블록(610), 축 인식 블록(620), 영상 크롭 블록(630), 특징점 검출 블록(640) 각각은 프로그래밍된 알고리즘 또는 인공 신경망을 포함하는 인공지능 모델로 구현될 수 있다. 또한, 4개의 블록들 중 둘 이상이 하나의 블록으로 결합되도록 구현될 수도 있다. 적어도 하나의 블록이 인공지능 모델로 구현된 경우, 적절한 훈련 이후에 해당 기능을 수행할 수 있을 것이다.
도 7는 본 발명의 실시 예에 따른 얼굴의 랜드마크들에 대한 지시자를 표시하는 절차를 도시한다. 도 7는 얼굴 변형 알고리즘을 실행하는 장치(예: 사용자 장치(110))의 동작들의 예를 보여준다.
도 7를 참고하면, 701 단계에서, 장치는 얼굴 인식 모듈을 이용하여 특징점 좌표들을 획득한다. 예를 들어, 특징점들은 도 8과 같을 수 있다. 도 8는 설명의 편의를 위해 특징점들을 2차원 평면에 표현한다. 도 8을 참고하면, 특징점들의 개수는 얼굴 인식 모듈의 설계에 따라 고정적이며, 고정된 개수의 특징점들의 좌표가 얼굴 인식 모듈로부터 제공된다. 이때, 각 특징점은 위치에 따라 고유의 식별 번호 및 좌표 값을 가진다. 여기서, 좌표 값은 2차원 또는 3차원 공간의 한 점을 지시, 즉, {x,y} 또는 {x, y, z}의 형식을 가진다.
702 단계에서, 장치는 시각화 영역에 해당하는 특징점들을 확인한다. 여기서, 시각화 영역은 지시자가 표시되는 랜드마크의 영역을 의미한다. 예를 들어, 눈썹 영역, 눈 영역, 입술 영역, 얼굴 윤곽 영역 중 적어도 하나가 시각화 영역에 포함될 수 있다. 예를 들어, 눈 영역이 시각화 영역에 포함되면, 장치는 701 단계에서 획득된 특징점들 중 눈의 외곽에 해당하는 특징점들을 확인한다.
703 단계에서, 장치는 확인된 특징점들을 이용하여 랜드마크들을 시각화한다. 확인된 특징점들 중 일부 특징점 쌍(pair)들 사이를 잇는 선들이 추가됨으로서, 해당 영역을 시각화하는 지시자가 생성될 수 있다. 선으로 이어지는 특징점 쌍들은 특징점의 식별 번호를 이용하여 미리 정의될 수 있다. 즉, 장치는 확인된 특징점들을 미리 정의된 순서에 따라 연결하는 곡선을 생성함으로써 눈 영역을 시각화하는 지시자를 생성할 수 있다. 예를 들어, 눈의 외곽에 해당하는 특징점들이 {p(e0), p(e1), p(e2), …, p(eN)}이라고 할 때, p(e0)→p(e1)→p(e2)→ …→p(eN) 순서로 선들이 그려짐으로써, 눈 영역이 시각화될 수 있다. 예를 들어, 도 8과 같이, 눈의 외곽에 해당하는 특징점들(801 내지 816)이 특징점들의 식별 번호에 기반하여 확인될 수 있으며, 확인된 특징점들(801 내지 816)을 연결하는 꺽인선 또는 곡선이 생성될 수 있다.
도 9는 본 발명의 실시 예에 따른 랜드마크를 변형하는 절차를 도시한다. 도 9는 얼굴 변형 알고리즘을 실행하는 장치(예: 사용자 장치(110))의 동작들의 예를 보여준다. 도 9는 하나의 랜드마크에 대한 변형을 위한 동작들을 예시하며, 프레임 내에 복수의 랜드마크들이 포함되는 경우, 후술되는 절차가 랜드마크들 각각에 대하여 반복적으로 수행될 수 있다.
도 9를 참고하면, 901 단계에서, 장치는 대상이 되는 랜드마크의 영역을 분리한다. 즉, 장치는 동영상의 특정 프레임에서 검출된 적어도 하나의 랜드마크 중 변형하고자 하는 대상이 되는 랜드마크(이하 '대상 랜드마크')를 선택한 후, 선택된 랜드마크의 영역, 즉, 픽셀들을 추출한다. 이때, 프레임에서 복수의 랜드마크들이 검출된 경우, 미리 정해진 규칙에 따라 순차적으로 대상 랜드마크가 선택될 수 있다.
902 단계에서, 장치는 조절 값에 따라 분리된 영역을 변형한다. 구체적으로, 장치는 해당 랜드마크에 대하여 입력된 조절 값을 확인하고, 조절 값에 기반하여 변형 타입 및 변형 정도를 결정한 후, 결정된 변형 타입 및 변형 정도에 따라 영역을 변환할 수 있다. 이때, 다양한 이미지 변환 알고리즘들 중 하나가 적용될 수 있다. 예를 들어, 아핀 변환(affine transform) 기법이 적용될 수 있다. 이 경우, 장치는 조절 값에 기반하여 아핀 변환을 위한 변환 행렬(transform matrix)을 결정하고, 변환 행렬을 이용하여 영역 내의 픽셀들을 기하학적으로 변환할 수 있다. 구체적으로, 장치는 분리된 영역의 픽셀들에 대하여 이동(translation), 반전(reflection), 스케일(scale), 회전(rotate), 전단(shear) 중 적어도 하나의 연산을 수행함으로써, 분리된 영역을 입력된 조절 값에 따라 변형할 수 있다.
903 단계에서, 장치는 변형된 영역을 프레임에 삽입한다. 영역이 프레임으로부터 분리된 후 변형되었으므로, 장치는 변형된 랜드마크를 다시 프레임에 삽입한다. 이때, 변형에 의해 영역의 크기가 변경(예: 확장 또는 축소)되었을 수 있는데, 이 경우, 장치는 분리할 때의 영역의 중심에 변형된 영역의 중심을 일치시킴으로써 변형된 영역이 삽입되는 위치를 결정할 수 있다. 이에 따라, 장치는 대상 랜드마크가 변형된 프레임을 획득하게 된다.
도 9를 참고하여 설명한 절차 중, 903 단계에서 변형된 영역을 프레임에 삽입함에 있어서, 변형에 의해 영역의 크기가 분리될 때 대비 축소된 경우가 존재할 수 있다. 이때, 영역의 축소 전에 랜드마크에 의해 점유되어 있었으나, 축소 후 랜드마크에 의해 점유되지 않는 영역(이하 '델타(delta) 영역')이 발생한다. 이 경우, 추가적인 처리 없이 축소된 영역을 삽입하면, 영역 분리 시 프레임에서 해당 픽셀들을 남겨둔 경우 프레임에 포함된 변형 전의 랜드마크의 일부가 델타 영역에서 보여질 것이고, 영역 분리 시 프레임에서 해당 픽셀들을 제거한 경우 영역의 축소로 인해 감소된 범위에 공백이 발생할 수 있다. 이를 방지하기 위해, 다음과 같은 다양한 추가적인 처리가 수행될 수 있다.
하나의 실시 예에 따라, 랜드마크의 주변 영역에 대한 추가적인 변형이 수행될 수 있다. 이 경우, 장치는 델타 영역을 채울 수 있도록 분리된 영역의 축소로 인해 발생하는 델타 영역의 주변의 픽셀들을 변형한다. 구체적으로, 장치는 분리된 영역의 바깥에 인접한 픽셀들을 선택하고, 선택된 픽셀들을 델타 영역을 커버하도록 확장, 즉, 스케일 변환을 수행할 수 있다. 이때, 픽셀들의 선택 및 스케일 변환 연산은 델타 영역을 구획함으로써 형성되는 복수의 서브-영역들 각각에 대하여 독립적으로 수행될 수 있다. 그리고, 서브-영역 별로 인접한 픽셀들을 선택함에 있어서, 장치는 서브-영역의 크기를 고려할 수 있다.
구체적인 예로, 도 10과 같이 랜드마크의 영역(1010)에 대응하는 축소된 영역(1020)이 주어진 경우, 장치는 축소된 영역(1020)의 중심(1021)에서 서브-영역(1030)의 중심을 지나는 가상의 선을 설정하고, 가상의 선과 축소된 영역(1020)의 경계(=서브-영역의 안쪽 경계)가 만나는 제1점(1041a) 및 설정된 선과 서브-영역의 바깥쪽 경계가 만나는 제2점(1041b)을 확인하고, 제2점(1041b)으로부터 제1점(1041a) 및 제2점(1041b) 간 거리에 기반하여 결정된 거리만큼 제2점(1041b)으로부터 떨어진 가상의 선 상의 제3점(1041c)을 포함하도록, 추가적인 변형에 의해 확장될 선택 영역을 결정할 수 있다. 그리고, 장치는 선택 영역에 대한 스케일 변환을 수행함으로써, 해당 서브-영역을 선택 영역으로 커버한다.
다른 실시 예에 따라, 축소되는 범위를 고려하여 랜드마크의 분리 시 적절한 마진(margin)이 적용될 수 있다. 구체적으로, 랜드마크의 영역을 분리할 때, 장치는 축소된 영역이 랜드마크의 영역을 모두 커버할 수 있는 정도로 랜드마크 주변의 픽셀들을 영역에 포함시킬 수 있다. 이에 따라, 영역이 축소되더라도, 변형 전의 랜드마크는 축소된 영역에 의해 모두 커버되므로, 변형 전의 랜드마크의 일부가 델타 영역에서 보여지지 아니할 것이다. 다만, 마진을 적용하는 방안은 영역 분리 시 프레임에 분리되는 영역 내의 픽셀들을 남겨둔 경우에 적용될 수 있다.
또 다른 실시 예에 따라, 델타 영역이 랜드마크 외부의 주변과 유사한 색상의 픽셀들로 채워질 수 있다. 다시 말해, 델타 영역이 주변 픽셀의 색상에 기반하여 결정되는 색상을 가지는 새로운 픽셀들로 채워질 수 있다. 이 경우, 장치는 프레임에서 검출된 랜드마크의 주변의 픽셀들 중 적어도 하나를 선택하고, 선택된 픽셀의 색상과 동일한 색상으로 델타 영역을 채울 수 있다. 이때, 픽셀의 선택 및 새로운 픽셀의 삽입은 델타 영역을 구획함으로써 형성되는 복수의 서브-영역들 각각에 대하여 독립적으로 수행될 수 있다. 여기서, 새로운 픽셀의 색상을 결정함에 있어서, 장치는 랜드마크의 경계에 인접한 픽셀들의 평균 색상 값을 해당 서브-영역을 채우기 위한 색상으로 선택할 수 있다. 또는, 하나의 픽셀을 선택함에 있어서, 장치는 해당 서브-영역의 크기를 고려할 수 있다. 예를 들어, 축소된 영역의 중심에서 서브-영역의 중심을 지나는 가상의 선을 설정하고, 설정된 선과 축소된 영역의 경계가 만나는 점 및 서브-영역의 중심과의 거리에 기반하여 결정되는 범위 내에 속하는 픽셀들의 평균 색상 값을 해당 서브-영역을 채우기 위한 색상으로 선택할 수 있다.
도 11은 본 발명의 실시 예에 따른 동영상에서 다수의 인물들의 얼굴들을 변형하는 절차를 도시한다. 도 11은 얼굴 변형 알고리즘을 실행하는 장치(예: 사용자 장치(110))의 동작들의 예를 보여준다.
도 11을 참고하면, 1101 단계에서, 장치는 동영상에서 얼굴을 트랙킹한다. 구체적으로, 장치는 인물의 얼굴에 대한 특징점들을 탐색하고, 탐색된 특징점들에 기반하여 동영상의 프레임들 내에서 얼굴의 영역을 확인할 수 있다. 예를 들어, 장치는 도 6예 예시된 얼굴 인식 모듈을 이용할 수 있다. 이때, 장치는 검출되는 적어도 하나의 인물의 얼굴 영역을 크롭핑할 수 있다.
1102 단계에서, 장치는 복수의 인물들이 검출되는지 판단한다. 여기서, 복수의 인물들은 서로 다른 인물들의 얼굴들이 검출됨에 따라 확인된다. 하나의 프레임이 복수의 얼굴들이 검출되거나 또는 서로 다른 프레임들에서 번갈아 등장하더라도 다른 인물들임이 확인되면, 복수의 인물들이 검출됨이 판단될 수 있다. 이때, 장치는 서로 다른 프레임들에서 번갈아 등장하더라도 얼굴의 특징점의 배치 등의 특성에 기반하여 서로 다른 인물들임을 인식할 수 있다. 복수의 인물들이 검출되지 아니하면, 본 절차는 종료된다. 이때, 도 11에 미도시되었지만, 장치는 하나의 인물에 대한 얼굴 변형 절차를 수행할 수 있다.
복수의 인물들이 검출되면, 1103 단계에서, 장치는 인물 별 조절 파라미터 세트들을 생성한다. 다시 말해, 장치는 얼굴 변형을 위한 다양한 조절 파라미터들을 저장하기 위한 변수들을 인물 별로 생성한다. 이에 따라, 장치는 인물 별로 얼굴 변형을 위한 조절 값들을 저장할 수 있다. 추가적으로, 장치는 인물 별 조절 파라미터 세트들의 현재 상태, 즉, 입력된 조절 값들을 화면에 표시할 수 있다.
1104 단계에서, 장치는 인물 선택을 위한 인터페이스를 표시한다. 복수의 인물들이 검출되었으므로, 사용자는 복수의 인물들 모두에 대한 얼굴 변형을 명령할 수 있다. 이때, 조절 값이 인물 별로 입력되어야 하므로, 장치는 어느 인물에 대한 조절 값을 입력하는지를 지정하기 위한 인터페이스를 표시할 수 있다. 예를 들어, 장치는 검출된 인물의 수 만큼의 선택 버튼들을 생성 및 표시하거나, 선택된 인물을 순차적으로 선택할 수 있는 이동 버튼들을 생성 및 표시할 수 있다. 이에 따라, 변형하고자 하는 인물들이 선택될 수 있으며, 추가적으로, 장치는 선택된 인물을 지시하는 지시자를 더 표시할 수 있다. 예를 들어, 지시자는 1103 단계에서 표시된 조절 파라미터 세트들에 표시되거나, 동영상의 프레임 내에 표시될 수 있다.
1105 단계에서, 장치는 사용자에 의해 선택된 인물에 대한 변형 절차를 수행한다. 변형 절차는 변형 명령 검출, 입력된 조절 값 확인, 표시 중인 프레임에 적용, 추출 명령 검출, 동영상 전체에 조절 값 적용, 동영상 파일 생성 등을 포함할 수 있다. 구체적으로, 변형 명령에 의해 해당 시점에 입력되어 있는 조절 값들이 표시 중인 프레임에 적용된다. 이때, 입력되어 있는 조절 값들은 사용자에 의해 선택된 인물의 얼굴 영상에 적용된다.
전술한 다양한 실시 예들에 따라, 동영상에 포함된 적어도 하나의 인물의 얼굴 영상이 변형되고, 변형된 얼굴 영상을 포함하는 동영상이 생성될 수 있다. 적어도 하나의 인물의 얼굴 영상을 변형하는 과정에서 사용자에게 보여지는 인터페이스들의 예는 다음과 같다. 도 12a 내지 도 12h는 본 발명의 실시 예에 따라 원본 동영상으로부터 얼굴 변형된 동영상을 획득하는 과정의 인터페이스들의 예를 도시한다.
도 12a는 얼굴 변형 알고리즘의 초기 화면의 예를 보여준다. 도 12a를 참고하면, 현재 진행 단계를 표시하는 단계 지시자(1211) 및 동영상 파일을 선택 및 업로드하기 위한 업로드 버튼(1212)이 표시된다. 사용자는 업로드 버튼(1212)을 선택(예: 클릭 또는 터치)하고, 변형하고자 하는 동영상 파일을 저장 공간에서 선택할 수 있다. 이에 따라, 장치는 사용자에 의해 지정된 동영상 파일을 읽어올 수 있다. 동영상 파일이 읽어지면, 도 12b와 같은 화면이 표시된다.
도 12b는 동영상 파일이 업로드된 후의 화면의 예를 보여준다. 도 12b를 참고하면, 동영상이 업로드되면, 동영상 파일의 파일명이 업로드 버튼(1212) 우측에 표시되고, 재생 창(play window)(1221)에 동영상이 재생된다. 이때, 동영상 파일의 업로드에 응하여, 장치는 동영상의 프레임들에서 얼굴을 검출하고, 얼굴의 랜드마크들을 트랙킹한다. 얼굴의 검출 및 랜드마크들의 트래킹은 별도의 명령이 없더라도 수행될 수 있다. 이에 따라, 랜드마크들에 대한 지시자들(1223a, 1223b, 1223c, 1223d)이 재생 창(1221) 내에 재생 중인 동영상에 오버랩되어 표시된다. 사용자는 지시자들(1223a, 1223b, 1223c, 1223d)를 통해 재생되는 동영상에서 랜드마크의 트랙킹 결과를 확인할 수 있다. 나아가, 사용자에의해 재생 버튼(1224a) 및/또는 일시정지 버튼(1124b)이 선택되면, 장치는 동영상의 재생을 정지 및/또는 재개할 수 있다. 사용자에 의해 다음 단계 버튼(1225)이 선택되면, 장치는 다음 단계로 진행하고, 도 12c와 같은 화면이 표시된다.
도 12c는 전처리를 위한 화면의 예를 보여준다. 도 12c와 같은 초기 화면에서 다음 단계 버튼(1225)이 선택되면, 장치는 동영상의 프레임들을 분석하며, 분석 중임을 나타내는 안내 팝업 창(1231)을 표시한다. 안내 팝업 창(1231)이 표시되는 동안, 장치는 동영상의 프레임들을 분석하고, 각 프레임에서 얼굴 영역을 크롭핑(cropping)한다. 이로 인해, 각 프레임의 얼굴 영역만이 이후의 처리 대상이 되므로, 연산량이 감소될 수 있다. 분석이 완료되면, 도 12d와 같은 화면이 표시된다.
도 12d는 얼굴 조절 값 입력 및 적용을 위한 화면의 예를 보여준다. 도 12d를 참고하면, 표시 창(1241), 인물 선택 버튼들(1242), 프레임 이동 버튼들(1243), 조절 값 입력 항목들(1244), 변형 명령 입력 버튼(1445), 조절 파라미터 세트 표시 영역(1246), 추출 명령 입력 버튼(1247)이 표시된다. 도 12d의 경우, 동영상 내 하나의 인물만이 포함되어서, 조절 파라미터 세트 표시 영역(1246)에 하나의 조절 파라미터 세트만이 표시되었다. 만일, 복수의 인물들이 동영상에 포함된 경우, 인물 선택 버튼들(1242)을 통한 입력에 따라, 장치는 조절 값을 적용할 인물을 선택할 수 있다. 프레임 이동 버튼들(1243) 중 하나가 선택되면, 장치는 선택된 버튼에 대응하는 양(예: 앞으로 10 프레임, 앞으로 1 프레임, 뒤로 1 프레임, 뒤로 10 프레임)만큼 표시 창(1241)에 표시되는 프레임을 변경할 수 있다.
조절 값 입력 항목들(1244)은 복수의 조절 항목들 및 각 항목의 값 입력을 위한 조절 바(bar)들을 포함한다. 도 12d의 예에서, 조절 값 입력 항목들(1244)은 눈 크기, 눈 간격, 코 간격, 입 간격, 턱 간격, 턱 넓이의 항목들을 포함한다. 다른 실시 예에 따라, 다른 항목이 더 추가되거나, 일부 항목이 배제되는 것이 가능한다. 예를 들어, 눈동자 색상, 홍채 색상 등의 항목이 더 추가될 수 있다. 사용자는 조절하고자하는 항목의 조절 바에서 버튼(1224a)을 좌-우로 이동시킴으로써 조절 값을 입력할 수 있고, 이에 따라 입력된 값(1224b)이 조절 바의 우측에 표시된다. 조절 값 입력 항목들(1244)을 통해 조절 값들이 입력된 상태에서, 변형 명령 입력 버튼(1445)이 선택되면, 장치는 입력된 조절 값들을 해당 인물의 얼굴의 영상에 적용한다. 적용된 번역은 표시 창(1241)에 표시된 프레임에 적용되며, 그 예는 도 12e와 같다.
도 12e는 조절 값들의 적용에 따라 변화하는 얼굴 영상의 예를 보여준다. 도 12e를 참고하면, 눈 크기 조절 바(1251)에서 조절 값이 0보다 큰 값(예: 37)으로 입력되고, 변형 명령 입력 버튼(1445)이 선택되면, 눈 크기가 증가한다. 이어서, 눈 간격 조절 바(1252)에서 조절 값이 0보다 작은 값(예: -35)으로 입력되고, 변형 명령 입력 버튼(1445)이 선택되면, 두 눈들 간 간격이 감소한다. 이후, 코 간격 조절 바(1253), 입 간격 조절 바(1254), 턱 간격 조절 바(1255), 턱 넓이 조절 바(1256)에 조절 값들이 입력되고, 변형 명령 입력 버튼(1445)이 선택되면, 코 간격, 입 간격, 턱 간격, 턱 넓이가 모두 조절된다. 그리고 조절된 얼굴 영상은 변형 명령 입력 버튼(1445)의 선택에 따라 표시 창(1241)에 표시된다. 이에 따라, 사용자는 원하는 항목의 조절을 실시간으로 확인하며, 원하는 정도의 적절한 값을 탐색할 수 있다.
도 12f 및 도 12g는 조절된 얼굴 영상을 표시하는 화면의 예를 보여준다. 도 12f를 참고하면, 조절 파라미터 세트 표시 영역(1246)은 현재 적용된 조절 값들을 표시한다. 이 상태에서, 추출 명령 입력 버튼(1247)이 선택되면, 도 12g와 같이, 추출 명령 입력 버튼(1247)의 컬러 및 문구가 전환되고, 사용자의 의사 재확인을 위한 확인 창(1271)이 표시된다. 확인 창(1271)은 긍정 버튼(1271a) 및 부정 버튼(1271b)를 포함한다. 긍정 버튼(1271a)이 선택되면, 동영상의 프레임들 전체의 얼굴 영상들에 현재의 조절 값들을 적용하는 연산이 시작된다.
도 12h는 동영상을 생성하는 과정을 표시하는 화면의 예를 보여준다. 도 12g에서, 긍정 버튼(1271a)이 선택되면, 장치는 동영상의 프레임들 전체의 얼굴 영상들에 현재의 조절 값들을 적용하는 연산을 수행하고, 이에 따라 프레임들이 처리되는 과정을 도 12h와 같이 표시할 수 있다. 구체적으로, 도 12h와 같이, 처리된 프레임들의 썸네일들(1281)이 순차적으로 표시된다. 이에 따라, 크롭된 얼굴 영상들이 변형되며, 장치는 크롭된 얼굴 영역들이 원본 동영상의 프레임들과 결합함으로써 새로운 동영상 파일을 생성하고, 지정된 경로에 저장한다. 이후, 미도시되었으나, 새로운 동영상 파일이 저장된 경로가 표시될 수 있다.
앞서 설명한 바와 같은 얼굴 변형 알고리즘을 이용하여, 동영상 내의 얼굴 영상이 사용자의 요구에 따라 변형될 수 있다. 변형 가능한 랜드마크의 예들로서, 눈, 눈썹, 코, 입, 턱이 설명되었으나, 얼굴 내 다른 부위, 예를 들어, 귀, 광대뼈, 관자놀이 등이 변형의 대상이 될 수도 있다. 이 경우, 해당 랜드마크에 적합한 변형의 방식이 설계되어야 할 것이다.
전술한 바와 같이 랜드마크들을 변형함에 있어서, 본 발명의 일 실시 예에 따라, 모든 프레임들에 대하여 입력된 조절 값이 구분 없이 일관적으로 적용되지 아니할 수 있다. 즉, 해당 랜드마크가 검출된 프레임이라 하더라도, 일정 조건에 따라 해당 프레임에서 해당 랜드마크에 대한 변형이 생략될 수 있다.
예를 들어, 눈의 경우, 눈을 감고 있더라도 눈이 검출될 것이지만, 눈을 감고 있는 프레임에 대한 눈의 변형은 생략될 수 있다. 이때, 눈을 감고 있는지 여부는 눈의 상단 경계에 속하는 특징점들 및 하단 경계에 속하는 특징점들의 거리에 기반하여(예: 거리가 임계치 미만) 판단될 수 있다.
다른 예로, 프레임에서 해당 랜드마크가 보여지는 각도에 따라, 해당 프레임에 대한 해당 랜드마크의 변형은 생략될 수 있다. 프레임에 포함되는 영상은 2차원이지만, 피사체는 3차원 공간 내에서 인식되므로, 각도와 무관하게 조절 값을 동일하게 적용 시, 어색한 얼굴 영상이 생성될 수 있다. 따라서, 프레임에 해당하는 평면 및 랜드마크의 정면에 해당하는 평면 간 각도가 일정 수준을 벗어나는 경우, 해당 프레임에서 해당 랜드마크에 대한 변형은 생략될 수 있다. 여기서, 랜드마크의 정면에 해당하는 평면은 얼굴의 정면에서 해당 랜드마크의 상대적인 각도를 보정함으로써 결정될 수 있고, 얼굴의 정면은 얼굴 인식 모듈에 의해 검출된 특징점들에 기반하여 판단될 수 있다.
본 발명의 실시 예에 따른 얼굴 변형 알고리즘은 다른 영상 처리 툴과 연동될 수 있다. 이를 위해, 얼굴 변형 알고리즘은 다른 영상 처리 툴에서 사용 가능한 형식으로 동영상 파일을 생성하고, 부가적인 데이터를 더 생성할 수 있다. 전술한 연동의 구조는 아래의 도 13과 같다.
도 13은 본 발명의 실시 예에 따른 얼굴 변형 알고리즘 및 영상 처리 툴 간 연동하는 구조를 도시한다. 도 13을 참고하면, 원본 동영상(1301)이 얼굴 변형 알고리즘(1310)에 입력된다. 얼굴 변형 알고리즘(1310)은 앞서 설명한 실시 예에 따라 동영상 내의 인물의 얼굴 영상을 변형하고, 출력물로서 변형된 동영상(1302a)을 제공한다. 나아가, 얼굴 변형 알고리즘(1310)은 출력물로서 랜드마크 마스크(mask)(1302b)를 더 제공할 수 있다. 랜드마크 마스크(1302b)는 얼굴 변형 알고리즘(1310)에 의해 검출된 랜드마크들 중 적어도 하나의 영역을 특정하는 데이터로서, 변형된 동영상(1302a)의 각 프레임에서 해당 랜드마크가 점유하는 영역을 지시한다. 이를 위해, 얼굴 변형 알고리즘(1310)을 실행하는 장치는 사용자로부터 입력된 조절 값들에 따라 얼굴 영상을 변형 시, 랜드마크 영역을 지시하는 정보도 함께 수정 및 기록한다. 랜드마크 마스크(1302b)도 일종의 동영상 파일로서, 랜드마크들의 영역을 구분하는 채널만을 포함하는 동영상일 수 있다. 예를 들어, 랜드마크 마스크(1302b)는 마스크 파일이라고도 불리우며, 각 프레임에서 랜드마크들의 영역을 1로, 나머지 영역을 0으로 표현할 수 있다.
영상 처리 툴(1320)은 변형된 동영상(1302a) 및 랜드마크 마스크(1302b)를 이용하여 변형된 동영상(1302a)에 대한 추가적인 가공을 수행할 수 있고, 이에 따라 추가 처리된 동영상(1303)을 생성한다. 여기서, 일 예로서, 영상 처리 툴(1320)은 노드 기반 그래프(node-based graph)에 의해 구성되는 알고리즘에 기반한 툴일 수 있다. 영상 처리 툴(1320)은 적어도 하나의 노드를 조합함으로써 영상 처리를 위한 그래프를 생성하고, 생성된 그래프에 의해 구성되는 알고리즘을 이용하여 입력 영상을 처리할 수 있다. 그래프에 의해 특정되는 알고리즘은 필요에 따라 사용자에 의해 구성된다.
이와 같이, 영상 처리 툴(1320)은 얼굴 변형 알고리즘(1310)의 출력물을 입력으로서 사용하여, 추가적인 처리를 수행할 수 있다. 본 발명의 일 실시 예에 따라, 얼굴 변형 알고리즘(1310)은 영상 처리 툴(1320)의 플러그-인의 하나로서 설계될 수 있다. 이 경우, 얼굴 변형 알고리즘(1310)은 영상 처리 툴(1320)의 실행 중 호출 및 실행될 수 있다.
얼굴 변형 알고리즘(1310)과 연동되는 영상 처리 툴(1320)에 대하여 더 설명하면 다음과 같다. 영상 처리 툴(1320)에서 구현되는 알고리즘은 적어도 하나의 노드를 조합함으로써 구성될 수 있는데, 하나의 알고리즘은 적어도 하나의 그래프에 의해 정의된다. 즉, 그래프는 적어도 하나의 노드를 포함하며, 노드들은 사용자의 조작 및 명령에 의해 조합될 수 있다. 노드는 지정된 기능을 수행하기 위한 명령어의 집합 또는 함수로 이해될 수 있고, 노드들을 연결함으로써 함수들이 지정된 순서에 따라 입력된 데이터를 처리하고, 출력을 생성하는 일련의 영상 처리 알고리즘이 구성될 수 있다. 사용자에 의해 구성되는 그래프의 일 예는 도 14와 같다.
도 14는 본 발명의 실시 예에 따른 노드 기반 그래프의 예를 도시한다. 도 14를 참고하면, 그래프는 1개의 입력 영상(1402), 1개의 도트(dot)(1405), 4개의 노드들(1411 내지 1414)를 포함한다. 입력 영상(1402)은 처리하고자 하는 원본 영상을 의미하며, 일반적으로 그래프의 최상단에 배치된다. 도트(1405)는 데이터를 복수의 방향들로 분기하며, 별도의 연산을 수행하지 아니한다. 도 4의 경우, 도트(1405)는 입력 영상(1402)에 대응하는 원본 영상을 노드1(1411) 및 노드3(1413)에게 제공하도록 설정되었다.
노드들(1411 내지 1414)은 주어진 연산 또는 기능을 수행한다. 노드들(1411 내지 1414)들 각각은 연결선을 통해 입력되는 영상 데이터를 처리하고, 출력한다. 노드들(1411 내지 1414)는 다양하게 정의될 수 있으며, 사용자에 의해 호출되고, 그래프의 일부로서 포함될 수 있다. 예를 들어, 노드들(1411 내지 1414) 각각은, 입력되는 영상의 일부를 추출하는 노드, 입력되는 영상을 가공하는 노드, 입력되는 영상에 기초하여 부가 정보를 생성하는 노드, 입력되는 영상을 지정된 저장공간에 저장하는 노드, 별도의 파일로 저장된 기능을 호출하는 노드, 특정 기능을 별도의 파일로 생성하는 노드, 인공지능 모델을 훈련시키는 노드, 훈련된 인공지능 모델을 호출하는 노드 중 적어도 하나일 수 있다. 노드들의 구체적인 예들은 이하 [표 1] 내지 [표 19]과 같다.
노드 이름 | 기능 설명 |
CheckerBoard | 체커보드 영상을 생성한다. |
ColorBar | SMPTE(Society of Motion Picture and Television Engineers) 시험 패턴을 생성한다. |
ColorWheel | 컬러 휠(color wheel) 영상을 생성한다. |
Constant | 모든 픽셀들이 동일 색상인 영상을 생성한다. |
CurveTool | 애니메이션 커브를 그리기 위해 입력되는 영상을 분석한다. |
Profile | 노드 트리 내에서 특정 지점에서의 스크립트의 성능을 측정한다. |
Read | 디스크에서 영상들을 로딩하고, 선형 RGB 색공간으로 변환한다. |
UDIM Import | UDIM 넘버링 기법을 따르는 텍스쳐 패티들의 세트를 불러온다. |
UnrealReader | 영상 처리 툴을 언리얼 에디터 세션(unreal editor session)에 연결한다. |
Viewer | 연결된 노드의 랜더링 출력을 표시한다. |
Write | 모든 업스트림 노드들의 결과를 디스크에 랜더링한다. |
노드 이름 | 기능 설명 |
Dither | 영상에 랜덤 노이즈를 부가한다. |
DustBust | 스캔된 영상으로부터 먼지(dirt)와 흠집(scratch)를 제거한다. |
Flare | 렌즈들 간 반사에 의해 생성되는 렌즈 플레어를 만든다. |
Glint | 영상 내의 광점(bright point) 주변에 별-모양(star-shaped) 광선(ray)를 생성한다. |
Grain | 영상에 합성 그레인(synthetic grain)을 부가한다. |
Grid | 영상의 상단에 수평 및 수직 선들의 격자를 생성한다. |
LightWrap | 전경(foreground)의 경계 주변에 후경(background) 빛과 합성된 리플렉션(reflection)을 생성한다. |
MarkerRemoval | 로토(roto) 쉐이프(shape)를 이용하여 최종 결과로부터 장면(footage)의 영역을 제거한다. |
Noise | 다양한 형태의 랜덤 노이즈를 입력 영상에 부가한다. |
Radial | 방사 그라데이션 램프(radial gradation ramp)를 생성한다. |
Ramp | 정의된 2개의 경계들 간 그라이데이션을 생성한다. |
Rectangle | 입력 영상의 상단에 솔리드 색상의 직사각형을 생성한다. |
Roto | 로토스코핑(rotoscoping) 작업을 위한 쉐이프를 생성 및 편집한다. |
RotoPaint | 로토와 유사한 기능을 수행하되, 클론(clone), 블러(blur), 닷지(dodge)와 같은 패인트 툴을 제공한다. |
ScannedGrain | 필름 그레인의 실제 스캔들 적용한다. |
Sparkles | 뷰어에 커스터마이즈된 광선 또는 스파클을 생성한다. |
Text | 영상에 텍스트 오버레이를 부가한다. |
노드 이름 | 기능 설명 |
add 3:2 pulldown | 24 fps 필름을 29.97 fps 인터레이스 비디오(interlaced video)로 변환한다. |
AppendClip | 클립을 머리에서 꼬리로 연결하거나 결합하여 샷에서 샷으로 작업이 흐를 수 있도록 한다. |
FrameBlend | 보다 부드러운 모션을 위해 프리앰들 사이를 보간(interpolate)한다. |
FrameHold | 입력 클립의 모든 프레임에 사용할 단일 프레임을 선택한다. |
FrameRange | 입력 클립의 프레임 범위를 설정한다. |
Kronos | 모션 벡터를 계산하여 장면(footage)을 느리게 하거나 빠르게 한다. |
NoTimeBlur | 노드 다운스트림이 분수 또는 다중 프레임을 요구하지 않게 한다. |
OFlow | 모션 벡터를 계산하여 장면(footage)을 느리게 하거나 빠르게 한다. |
Remove 3:2 pulldown | 입력 장면(footage)에서 3:2 풀다운을 제거한다. |
Retime | 클립의 시간을 재지정하여 재생 속도를 늦추거나 높인다. |
SmartVector | SmartVector 툴 세트와 함께 사용할 SmartVector를 계산한다. |
TemporalMedian | 입력 클립에 시간 중앙값 필터를 적용한다. |
TimeBlur | 모션 블러와 일치하도록 빠르게 움직이는 물체의 가장자리 번짐(smear)을 시뮬레이션한다. |
TimeClip | 시간에 따라 입력 클립을 오프셋하거나 재생 방향을 반대로 한다. |
TimeEcho | 입력의 여러 프레임을 단일 프레임으로 병합한다. |
TimeOffset | 입력 클립을 시간적으로 앞/뒤로 오프셋한다. |
TimeWarp | 전체 길이를 변경하지 않고 입력 클립을 리타임한다(retime). |
VectorGenerator | 모션 벡터 필드를 포함하는 이미지를 만든다. |
VectorToMotion | SmartVector를 모션, 정방향 및 역방향 채널로 변환한다. |
노드 이름 | 기능 설명 |
AddChannels | 입력 이미지에 채널을 추가합니다. |
ChannelMerge | 각 입력에서 하나의 채널을 병합하고 결과를 출력 채널에 저장한다. |
Copy | B 입력의 채널을 A 입력의 채널로 교체한다. |
Remove | 입력 클립에서 채널을 제거한다. |
Shuffle | 단일 입력 또는 두 입력 간에 최대 8개의 채널을 재배열한다. |
ShuffleCopy | 두 입력 간에 최대 8개의 채널을 재정렬한다. |
노드 이름 | 기능 설명 |
Add | 채널에 고정 값을 추가하여 출력을 밝게 또는 어둡게 한다. |
Clamp | 선택한 채널의 값을 지정된 범위로 제한하거나 고정한다. |
ClipTest | 지정된 범위 밖에 있는 모든 픽셀에 얼룩말 줄무늬를 적용한다. |
CMSTestPattern | 색상 관리를 위한 보정 패턴을 생성한다. |
ColorCorrect | 대비, 감마, 게인 및 오프셋을 빠르게 조정한다. |
ColorLookup | LUT를 사용하여 대비, 감마, 게인 및 오프셋을 조정할 수 있게 한다. |
ColorMatrix | RGB 색상에 임의의 3x3 행렬을 곱한다. |
Colorspace | 한 색상 공간에서 다른 색상 공간으로 이미지를 변환한다. |
ColorTransfer | 한 클립의 색상을 다른 클립의 색상과 일치시킨다. |
CrossTalk | 한 색상 채널에서 다른 색상 채널로 번짐을 추가하거나 제거한다. |
Exposure | 다양한 스케일을 사용하여 입력 시퀀스의 노출을 조정한다. |
Expression | 채널 값에 복잡한 수학 공식을 적용한다. |
Gamma | 채널 세트에 일정한 감마 값을 적용한다. |
GenerateLUT | 색상 관리 노드에서 조회 테이블 또는 LUT를 생성한다. |
Grade | 뷰어에서 픽셀을 샘플링하여 흰색과 검은색 점을 정의한다. |
HistEQ | 입력 이미지의 히스토그램을 균등화한다. |
Histogram | 각 밝기 수준에서 픽셀 수를 그래프로 표시한다. |
HSVTool | 단일 제어판에서 색조, 채도 및 값 구성 요소를 조정한다. |
HueCorrect | 색조 범위에서 채도 수준을 조정한다. |
HueShift | 입력 이미지의 색상 공간을 변환한다. |
노드 이름 | 기능 설명 |
Invert | 채널 값을 반전한다. |
Log2Lin | 로그 형식을 선형 형식으로 변환한다. |
MatchGrade | 두 입력 간의 색상을 일치시키는 등급을 계산한다. |
MinColor | 두 이미지에서 가장 어두운 값 간의 차이를 계산한다. |
Multiply | 채널 값에 주어진 인수를 곱한다. |
OCIOCDLTransform | OpenColorIO 라이브러리를 기반으로 하는 ASC CDL 등급을 적용한다. |
OCIOColorspace | 한 색상 공간에서 다른 색상 공간으로 이미지 시퀀스를 변환한다. |
OCIODisplay | 이미지 시퀀스에 색상 공간 변환을 적용한다. |
OCIOFileTransform | LUT 파일의 색상 공간 변환을 이미지 시퀀스에 적용한다. |
OCIOLogConvert | compositing_log에서 scene_linear로 또는 그 반대로 변환한다. |
OCIOLookTransform | OCIO 구성 파일에서 미리 정의된 모양을 사용하여 창의적인 색상 공간 변환을 적용한다. |
PLogLin | 로그 인코딩과 선형 인코딩 간에 변환한다. |
Posterize | 이미지의 색상 해상도를 줄인다. |
RollOffContrast | 모든 채널에 동일하게 대비 곡선을 적용한다. |
Sampler | 픽셀 데이터의 수평 주사선을 조회 곡선으로 변환한다. |
Saturation | 이미지의 색조 범위에 관계없이 채도를 수정한다. |
SoftClip | HDR 이미지를 0-1 범위로 압축한다. |
Toe | 검정 레벨을 올리지만 흰색이 대부분 영향을 받지 않도록 롤오프한다. |
Truelight | |
Vectorfield | LUT의 색상 값을 적용하여 미리 계산된 파일을 사용하여 색상을 수정한다. |
노드 이름 | 기능 설명 |
Bilateral | 이미지를 매끄럽게 하고 가장자리를 보존한다. |
Blur | 다양한 알고리즘을 사용하여 입력에 블러를 추가한다. |
BumpBoss | 입력 B 위에 입력 A를 오버레이하여 엠보싱 효과를 생성한다. |
Convolve | 자신의 필터 이미지를 제공하여 사용자 정의 필터 효과를 만든다. |
Defocus | 디스크 필터를 사용하여 이미지의 초점을 흐리게 한다. |
DegrainBlue | 파란색 채널의 그레인을 줄인다. |
DegrainSimple | 빨강, 녹색 및 파랑 채널의 그레인을 각각 줄인다. |
Denoise | 푸티지에서 노이즈 또는 그레인을 제거한다. |
DirBlur | 입력 이미지에 세 가지 유형의 방향 흐림 효과를 적용한다. |
DropShadow | 입력 이미지에 대한 그림자를 만든다. |
EdgeBlur | 지정된 매트 채널 내에서 감지된 가장자리를 흐리게 한다. |
EdgeDetect | 가장자리를 감지하고 흐림 및 침식 옵션을 포함한다. |
EdgeExtend | 소프트 매트에서 미리 곱하지 않은 전경색을 수정한다. |
Emboss | 원래 입력을 오프셋하여 엠보싱 효과를 생성한다. |
Erode (blur) | 크기 컨트롤에 대한 입력 픽셀을 필터링한다. |
Erode (fast) | 입력에서 어둡고 밝은 픽셀의 상대적인 양을 제어한다. |
Erode (filter) | 매트에 유용한 크기 컨트롤을 기준으로 입력 픽셀을 필터링한다. |
Glow | 이미지의 밝은 영역을 더 밝게 표시한다. |
GodRays | 조명 및 흐림 효과를 생성한다. |
Inpaint | 추적 마커 또는 와이어와 같은 원치 않는 요소를 제거한다. |
Laplacian | 에지 감지 또는 움직임 추정에 유용한 이미지를 생성한다. |
LevelSet | 고품질 확장 또는 곱셈 해제 작업을 생성한다. |
Matrix | 채널을 행렬 값으로 곱하기 위해 행렬을 추가한다. |
Median | 중앙값 픽셀을 계산하여 뷰어에 출력한다. |
MotionBlur | 시퀀스에 사실적인 모션 블러를 추가한다. |
MotionBlur2D | 2D 변환 정보를 조합하여 UV 벡터를 출력한다. |
MotionBlur3D | 3D 카메라 정보를 조합하여 UV 벡터를 출력한다. |
Sharpen | 입력 이미지에서 특정 채널을 선명하게 한다. |
Soften | 입력 이미지에서 특정 채널을 부드럽게 한다. |
VectorBlur | 각 픽셀을 직선으로 흐리게 하여 모션 블러를 생성한다. |
VolumeRays | vol_pos 위젯에서 방사되는 조명 효과를 만든다. |
ZDefocus | 깊이 맵 채널에 따라 이미지를 흐리게 한다. |
ZSlice | 동일한 Z 깊이를 특징으로 하는 이미지 조각을 강조 표시한다. |
노드 이름 | 기능 설명 |
ChromaKeyer | 로컬 GPU를 활용할 수 있는 그린 및 블루스크린 키어. |
Cryptomatte | 로컬 GPU를 활용할 수 있는 그린 및 블루스크린 키어. |
Difference | 두 이미지의 차이를 매트로 만든다. |
Encryptomatte | 기존 Cryptomatte 인코딩 매트 세트에 새 매트를 추가한다. |
HueKeyer | RGB 채널에서 색조를 계산하여 알파 채널에 매트를 만든다. |
IBKColor | IBKGizmo와 함께 사용할 클린 플레이트를 생성한다. |
IBKGizmo | IBKColor 클린 플레이트에서 키를 생성한다. |
Keyer | 몇 가지 간단한 키어 모음을 제공한다. |
Keylight | 업계에서 입증된 색상 차이 키를 생성한다. |
Primatte | 단일 픽셀 또는 픽셀 범위를 증분 샘플링하여 키를 생성한다. |
Ultimatte | AdvantEdge 기술 색상 차이 키를 생성한다. |
노드 이름 | 기능 설명 |
Absminus | 차 알고리즘(abs(A-B))을 사용하여 이미지를 병합한다. |
AddMix | over를 사용하여 이미지를 병합하지만 결과를 미리 곱하기도 한다. |
Blend | 모든 입력의 가중 평균을 만든다. |
ContactSheet | 모든 입력을 표시하는 밀착 인화를 생성한다. |
CopyBBox | A 입력에서 B 스트림으로 경계 상자를 복사한다. |
CopyRectangle | 한 입력의 직사각형 영역을 다른 입력 위에 복사한다. |
Dissolve | 두 입력의 가중 평균을 생성한다. |
In | in 알고리즘: Ab를 사용하여 이미지를 병합한다. |
KeyMix | 마스크가 검정색이 아닌 경우 입력 A를 입력 B에 복사한다. |
LayerContactSheet | 입력의 모든 레이어를 표시하는 밀착 인화를 생성한다. |
Matte | 무광택 알고리즘 Aa+B(1-a)를 사용하여 이미지를 병합한다. |
Max | 무광택 알고리즘 max(A,B)를 사용하여 이미지를 병합한다. |
Merge | 다양한 알고리즘을 사용하여 여러 이미지를 병합한다. |
MergeExpression | Tcl 표현식을 사용하여 두 이미지를 병합한다. |
Min | min(A,B) 알고리즘을 사용하여 이미지를 병합한다. |
Multiply | 곱하기 알고리즘을 사용하여 이미지를 병합한다. AB, A<0 및 B<0인 경우 A. |
Out | 출력 알고리즘 A(1-b)를 사용하여 이미지를 병합한다. |
Plus | 더하기 알고리즘(A+B)을 사용하여 이미지를 병합한다. |
Premult | 입력의 rgb 채널에 알파 채널을 곱한다. |
Screen | 화면 알고리즘을 사용하여 이미지를 병합한다. |
Switch | 원하는 수의 입력 간에 전환한다. |
TimeDissolve | 시간 경과에 따른 곡선을 사용하여 두 입력 사이를 용해한다. |
Unpremult | 입력의 RGB 채널을 알파 채널로 나눈다. |
ZMerge | 적절한 3D 깊이에서 입력 이미지를 병합한다. |
노드 이름 | 기능 설명 |
AdjustBBox | 경계 상자의 가장자리를 확장하거나 자른다. |
BlackOutside | 경계 상자 영역 외부의 모든 것을 검은색으로 채운다. |
CameraShake | 시퀀스에 시뮬레이션된 카메라 흔들림을 추가한다. |
Card3D | 3개의 작업 축에 기하학적 변환을 적용한다. |
CornerPin2D | 4각형 피쳐를 다른 이미지 시퀀스로 바꿉니다. |
Crop | 이미지 영역의 불필요한 부분을 잘라냅니다. |
GridWarp | 한 베지어 그리드에서 다른 베지어 그리드로 이미지를 왜곡한다. |
GridWarpTracker | 추적 데이터로 구동되는 맞춤형 그리드를 사용하여 변형 및 변형한다. |
IDistort | 이미지의 UV 채널을 기반으로 입력 이미지를 왜곡한다. |
LensDistortion | 주어진 이미지에서 렌즈 왜곡을 추정한다. |
Mirror | 형식 영역의 중심을 중심으로 입력 이미지를 뒤집습니다. |
PointsTo3D | 이미지 시퀀스에서 2D 포인트의 3D 위치를 계산한다. |
Position | 입력 이미지를 정수 픽셀만큼 이동한다. |
Reconcile3D | 3D 공간의 한 점을 카메라의 x, y 위치로 변환한다. |
Reformat | 입력의 크기를 조정하고 다른 형식으로 재배치한다. |
SphericalTransform | 서로 다른 투영 간에 이미지를 변환한다. |
SplineWarp | 여러 모양이나 핀을 기반으로 이미지를 왜곡한다. |
Stabilize | 원치 않는 카메라 이동, 회전 및 크기 조정을 제거한다. |
STMap | 절대 위치를 사용하여 이미지에서 픽셀을 이동한다. |
Tile | 입력 이미지의 축소된 타일 복사본을 만듭니다. |
Tracker | 이미지의 픽셀 움직임에서 애니메이션 데이터를 추출한다. |
Transform | 입력 이미지를 변환, 회전, 크기 조정 및 기울이기. |
TransformMasked | 변형과 유사하지만 기본 제공 마스크 옵션이 있다. |
TVIScale | 이미지의 배율을 2배로 조정한다. |
VectorCornerPin | SmartVectors를 사용하여 여러 프레임에 이미지를 전파한다. |
VectorDistort | SmartVector를 사용하여 여러 프레임에 페인트를 전파한다. |
노드 이름 | 기능 설명 |
CatFileCreator | 터치스크립트 모델(.pt)을 추론-읽기 가능 파일(.cat)로 변환한다. |
CopyCat | 특정 작업을 수행하기 위한 네트워크를 훈련하고, .cat 파일을 생성한다. 기계학습을 활용하기 위해 먼저 데이터를 사용해 신경망을 학습시킬 필요가 있는데, CopyCat 노드는 입력(Input)과 해당 입력에 대한 레이블인 GT(Ground Truth)을 제공하면, 주어진 입력에 대한 결과를 추론하기 위해 사용할 수 있는 모델을 훈련하고, .cat 파일을 생성한다. 이후, Inference 노드에서 .cat 파일을 활용하여 새로운 입력에 대한 추론을 실행할 수 있다. |
Deblur | 입력 이미지에서 모션 블러를 제거한다. |
Inference | .cat 파일에 따른 결과를 입력 영상에 적용한다. 위의 CopyCat 노드에 의해 학습된 .cat 파일을 사용하여 학습에 사용되지 않은 새로운 입력 영상에 대해 추론 작업 수행한다. |
Upscale | 입력 영상을 업스케일링한다. |
노드 이름 | 기능 설명 |
AmbientOcclusion | 3D 장면에 대한 주변 폐색을 계산한다. |
ApplyMaterial | 매트 입력의 재료를 개체에 적용한다. |
Axis | 새 변환 축을 추가하여 null 개체로 작동한다. |
BasicMaterial | 개체가 에뮬레이트하는 재료 모양을 제어한다. |
BlendMat | 배경 렌더링과 개체를 혼합한다. |
Camera | 실제 카메라를 에뮬레이트하고, 2D 텍스처를 투영할 수도 있다. |
CameraTracker | 카메라 추적 또는 매치무빙 도구를 제공한다. |
Card | 3D 장면에서 간단한 평면을 만든다. |
CrossTalkGeo | 곡선을 사용하여 형상의 XYZ 점을 변환한다. |
Cube | 3D 장면에서 조정 가능한 큐브를 만든다. |
Cylinder | 3D 장면에서 조정 가능한 실린더를 만든다. |
DepthGenerator | 푸티지에서 깊이 맵을 생성한다. |
DepthToPoints | 깊이 패스 및 3D 카메라에서 포인트 클라우드를 생성한다. |
DepthToPosition | 깊이 패스와 3D 카메라에서 위치 패스를 생성한다. |
Diffuse | 장면에서 조명된 재질의 색상을 조정한다. |
Direct | 3D 장면에서 조정 가능한 조명을 만든다. |
DisplaceGeo | 이미지를 기반으로 3D 지오메트리 객체를 수정한다. |
Displacement | 렌더링할 때 개체 표면에 기하학적 세부 사항을 추가한다. |
EditGeo | 뷰어에서 정점을 조정하여 형상을 수정한다. |
Emission | 빛을 방출하는 램프 또는 기타 소스를 시뮬레이션한다. |
Environment | 3D 장면에서 조정 가능한 조명을 만든다. |
FillMat | 선택한 재질 채널을 일정한 색상으로 바꾼다. |
GeoSelect | 형상의 정점 선택을 저장하고 로드한다. |
Light | 3D 장면에서 조정 가능한 조명을 만든다. |
LogGeo | 값을 거듭제곱하여 점의 XYZ를 이동한다. |
LookupGeo | 조회 곡선을 사용하여 형상을 수정한다. |
MergeGeo | 지오메트리 개체를 병합한다. |
노드 이름 | 기능 설명 |
MergeMat | 다양한 알고리즘을 사용하여 두 개의 셰이더 노드를 결합한다. |
ModelBuilder | 2D 샷을 위한 3D 모델을 쉽게 생성할 수 있는 방법을 제공한다. |
ModifyRIB | RenderMan용 스크립트에 RIB 문을 삽입한다. |
Normals | 형상의 법선을 조작한다. |
Phong | Phong 알고리즘을 사용하여 음영 및 하이라이트를 만든다. |
Point | 3D 장면에서 조정 가능한 조명을 만든다. |
PointCloudGenerator | CameraTracker 데이터에서 조밀한 포인트 클라우드를 생성한다. |
PoissonMesh | 조밀한 점 구름에서 메쉬를 생성한다. |
PositionToPoints | xyz 이미지에서 포인트 클라우드를 생성한다. |
PrmanRender | Pixar의 RenderMan Pro Server를 사용하여 장면을 렌더링한다. |
ProceduralNoise | Perlin 노이즈 기능을 사용하여 형상을 수정한다. |
Project3D | 카메라를 통해 물체에 이미지를 투영한다. |
RadialDistort | 형상에 배럴 또는 핀 쿠션 왜곡을 만든다. |
RayRender | 장면 노드에 연결된 모든 개체와 조명을 렌더링한다. |
ReadGeo | 지정된 위치에서 형상을 가져옵니다. |
Reflection | PrmanRender 노드와 함께 사용할 때 반사를 만든다. |
Refraction | PrmanRender 노드와 함께 사용할 때 굴절을 만든다. |
Relight | 3D 조명을 사용하여 2D 이미지를 다시 조명한다. |
ScanlineRender | 장면 노드에 연결된 모든 개체와 조명을 렌더링한다. |
Scene | 3D 스크립트의 모든 요소를 렌더 노드에 연결한다. |
Specular | 재료의 하이라이트가 얼마나 밝게 나타나는지 제어한다. |
Sphere | 3D 장면에서 조정 가능한 구를 만든다. |
Spot | 3D 장면에서 조정 가능한 조명을 만든다. |
TransformGeo | 형상을 변환, 회전, 크기 조정 및 기울이기 |
Transmission | 표면을 통과하는 빛의 흡수를 시뮬레이션한다. |
Trilinear | bbox의 삼선형 보간법을 사용하여 지오메트리를 왜곡한다. |
UVProject | 개체의 UV 좌표를 설정하거나 바꾼다. |
UVTile | 주어진 UV(또는 UDIM) 패치의 좌표를 수정한다. |
Wireframe | 형상 표면에 와이어프레임 오버레이를 렌더링한다. |
WriteGeo | 지정된 파일에 지오메트리를 기록한다. |
노드 이름 | 기능 설명 |
ParticleBlinkScript | BlinkScript를 사용하여 입자 시스템을 만든다. |
ParticleBounce | 3D 모양을 통과하는 대신 입자를 3D 모양으로 바운스한다. |
ParticleCache | 입자 시스템에 대한 형상 시뮬레이션을 디스크에 저장한다. |
ParticleCurve | 입자에 곡선을 적용하여 시간 경과에 따라 변경한다. |
ParticleDirectionalForce | 입자에 방향력을 적용한다. |
ParticleDrag | 입자에 드래그를 적용하여 시간이 지남에 따라 속도를 변경한다. |
ParticleEmitter | 다른 입자 노드가 영향을 미치는 입자를 방출한다. |
ParticleExpression | 속성에 표현식을 설정하여 입자를 조정한다. |
ParticleGravity | 입자에 중력을 적용한다. |
ParticleLookAt | 입자가 "보고 있는" 3D 점을 설정한다. |
ParticleMerge | 여러 입자 시스템을 하나의 스트림으로 결합한다. |
ParticleMotionAlign | 모든 입자를 모션 방향을 따라 정렬한다. |
ParticlePointForce | 3D 공간의 한 지점에서 입자를 끌어당기거나 밀어낸다. |
ParticleSettings | 프레임당 발생하는 입자 시뮬레이션 단계 수를 설정한다. |
ParticleSpawn | 기존 입자에서 입자를 방출한다. |
ParticleSpeedLimit | 파티클을 지정된 속도로 제한한다. |
ParticleToGeo | 채널별로 시뮬레이션에서 입자를 제어한다. |
ParticleTurbulence | 입자 움직임에 노이즈를 적용한다. |
ParticleVortex | 입자에 힘을 가하여 가상의 선으로 끌어당긴다. |
ParticleWind | 입자에 부는 바람을 시뮬레이션한다. |
노드 이름 | 기능 설명 |
DeepColorCorrect | 각 픽셀의 모든 샘플에 색상 보정을 적용한다. |
DeepCrop | 주어진 깊이를 기준으로 깊은 데이터를 자른다. |
DeepExpression | 표현식을 사용하여 심층 데이터에 복잡한 수학을 적용한다. |
DeepFromFrames | 여러 2D 입력 프레임을 단일 딥 프레임의 샘플에 복사한다. |
DeepFromImage | 표준 2D 이미지를 깊은 이미지로 변환한다. |
DeepMerge | 깊은 이미지의 샘플을 병합하고 홀드아웃을 처리한다. |
DeepRead | 디스크에서 .dtex 및 .exr(2.3) 딥 이미지를 로드한다. |
DeepRecolor | 표준 2D 및 딥 이미지 색상 정보를 병합한다. |
DeepReformat | 깊은 이미지의 크기를 조정하고 다른 형식으로 재배치한다. |
DeepSample | 깊은 이미지에서 주어진 픽셀을 샘플링한다. |
DeepToImage | 깊은 이미지의 샘플을 일반 2D 이미지로 병합한다. |
DeepToPoints | 딥 픽셀 샘플을 3D 공간의 포인트로 변환한다. |
DeepTransform | 깊은 이미지를 번역하고 크기를 조정한다. |
DeepWrite | 모든 업스트림 딥 노드를 디스크에 .exr(2.3) 파일로 렌더링한다. |
노드 이름 | 기능 설명 |
Anaglyph | 입력을 애너글리프 이미지로 변환한다. |
JoinViews | 개별 파일의 보기를 단일 출력으로 결합한다. |
MixViews | 두 뷰 간의 혼합을 표시한다. |
OneView | 처리를 위해 스트림에서 단일 보기를 분리한다. |
ReConverge | 이미지가 화면 깊이로 나타나도록 수렴을 이동한다. |
ShuffleViews | 스크립트에서 보기를 재정렬한다. |
SideBySide | 두 개의 뷰를 나란히 표시한다. |
노드 이름 | 기능 설명 |
AddTimeCode | 메타데이터 다운스트림에 시간 코드를 추가한다. |
CompareMetaData | 파일 간의 메타데이터 차이를 표시한다. |
CopyMetaData | 한 이미지에서 다른 이미지로 메타데이터를 복사한다. |
ModifyMetaData | 파일과 연결된 메타데이터를 추가, 편집 또는 제거한다. |
ViewMetaData | 입력 노드에 의해 전달된 메타데이터를 표시한다. |
노드 이름 | 기능 설명 |
Assert | Tcl 표현식의 유효성을 테스트한다. |
AudioRead | 곡선 편집기에 표시할 오디오 파일을 읽는다. |
Backdrop | 배경색이 있는 노드 그래프의 노드를 그룹화한다. |
BlinkScript | 출력의 모든 픽셀에 대해 Blink 커널을 실행한다. |
BurnIn | 푸티지의 특정 영역에 텍스트를 추가한다. |
DiskCache | 입력에서 디스크로 스캔라인을 캐시한다. |
Dot | 명확성을 위해 노드 사이의 연결 화살표를 구부린다. |
Group | 단일 노드 내에 여러 노드를 중첩한다. |
Input | 그룹 노드에 입력 화살표를 추가한다. |
LiveGroup | 여러 아티스트가 동일한 샷에서 공동 작업할 수 있다. |
LiveInput | 외부 스크립트를 참조할 수 있는 입력 화살표를 추가한다. |
NoOp | 변경되지 않은 상태로 입력 이미지를 전달한다. |
Output | 그룹 노드에 출력 화살표를 추가한다. |
PostageStamp | 모든 프레임에서 출력의 축소판을 표시한다. |
Precomp | 독립적인 .nk 파일에 스크립트를 저장한다. |
Root | 프로젝트 설정을 포함시키며, 노드 그래프에 표시되지 않는다. |
StickyNote | 노드 그래프에 메모를 추가한다. |
All plugins | 기즈모를 표시하고 노드 목록을 업데이트한다. |
노드 이름 | 기능 설명 |
F_Align | Global Motion Estimation을 사용하여 샷을 정렬하는 데 도움을 준다. |
F_DeFlicker | 프레임 사이의 휘도 깜박임을 줄이는 데 도움을 준다. |
F_ReGrain | 다른 이미지의 시퀀스에 그레인을 추가한다. |
F_RigRemoval | 이미지 시퀀스에서 원하지 않는 개체를 제거한다. |
F_Steadiness | Global Motion Estimation을 사용하여 안정적인 샷을 지원한다. |
F_WireRemoval | 샷에서 와이어를 제거할 때 일부 작업을 자동화한다. |
[표 1] 내지 [표 19]에 나열된 노드들의 명칭은 예시적인 것으로, 그 명칭은 구체적인 실시 예에 따라 달라질 수 있다.
도 14와 같이, 영상 처리 툴(1320)에서 제공되는 적어도 하나의 노드를 포함하는 그래프를 통해, 그래프에 연결된 입력 영상이 처리될 수 있다. 그래프의 구성은 사용자의 명령에 의해 이루어질 수 있으며, 사용자의 명령은 영상 처리 툴의 인터페이스를 통해 입력된다. 일 실시 예에 따른 영상 처리 툴의 인터페이스는 아래의 도 15와 같다.
도 15는 본 발명의 실시 예에 따른 영상 처리를 위한 툴의 인터페이스를 도시한다. 도 15를 참고하면, 인터페이스는 메뉴 영역(1510), 툴바 영역(1520), 뷰(view) 영역(1530), 그래프 영역(1540), 속성 설정 영역(1550)을 포함한다.
메뉴 영역(1510)은 영상 처리 툴의 사용을 위해 필요한 메뉴들을 제공하는 영역이다. 예를 들어, 외부 파일을 로딩하거나, 작업 중인 영상을 저장하거나, 그래프를 저장하거나, 영상 처리 툴에 관련된 설정을 변경하는 등의 기능들을 위한 메뉴들이 제공될 수 있다. 메뉴 영역(1510)에 표시되는 메뉴들의 적어도 일부는 사용자에 의해 지정된 메뉴를 포함할 수 있다. 사용자에 의해 지정된 메뉴는 별도의 프로그래밍 언어(예: 파이썬)에 의해 작성되어, 지정된 경로에 저장될 수 있다. 작성된 메뉴는 영상 처리 툴의 시작 시 호출되며, 메뉴 영역(1510)에 추가된다. 본 발명의 실시 예에 따라, 사용자에 의해 지정된 메뉴는 얼굴 변환 알고리즘을 호출하는 항목을 포함할 수 있다. 이 경우, 얼굴 변환 알고리즘을 호출하는 항목이 선택되면, 장치는 얼굴 변환 알고리즘을 실행하고, 초기 화면(예: 도 12a의 화면)을 표시할 수 있다.
툴바 영역(1520)은 그래프를 구성하기 위해 필요한 도구들의 리스트를 제공하는 영역이다. 툴바 영역(1520)은 노드들을 표시할 수 있다. 툴바 영역(1520)에서 어느 하나의 노드가 선택되면, 선택된 노드는 그래프 영역(1540)에 삽입될 수 있다.
뷰 영역(1530)은 영상을 표시하는 영역이다. 뷰 영역(1530)은 영상의 재생 상태를 제어하기 위한 버튼들을 포함할 수 있다. 뷰 영역(1530)에 표시되는 영상은 그래프 영역(1540)에 구성된 그래프에 의해 지정될 수 있다. 뷰 영역(1530)은 원본 영상, 처리 중간 과정의 영상, 처리완료된 영상 중 하나를 표시할 수 있다. 또한, 뷰 영역(1530)은 영상의 처리에 관련된 그래픽을 표시할 수 있다.
그래프 영역(1540)은 사용자에 의해 선택된 노드들이 표시되고, 노드들을 조합함으로써 그래프를 구성하기 위한 명령을 입력하는 공간을 제공하는 영역이다. 사용자는 그래프 영역(1540) 내에서 노드들을 드래그(drag)함으로써 이동시킬 수 있고, 연결선을 생성함으로써 특정 노드의 출력이 다른 노드의 입력으로서 제공되도록 설정할 수 있고, 특정 노드를 선택함으로써 속성 설정 영역(1550)에 설정 항목들이 표시되도록 제어할 수 있다. 또한, 사용자는 그래프 영역(1540)에서 단축키를 입력함으로써 노드를 추가하거나 제거할 수 있다.
속성 설정 영역(1550)은 그래프 영역(1540)에 표시된 노드들 중 사용자에 의해 선택된 노드에서 수행되는 연산에 관련된 속성(property)을 조절하기 위한 인터페이스를 제공하는 영역이다. 속성 설정 영역(1550)에 포함되는 인터페이스 항목들은 선택된 노드에 따라 달라진다. 예를 들어, 속성 설정 영역(1550)은 값을 입력하기 위한 항목, 기능을 온/오프 또는 스위칭하기 위한 항목, 다른 영역을 제어하기 위한 항목 등을 포함할 수 있다.
도 16은 본 발명의 실시 예에 따른 영상 처리 절차를 도시한다. 도 16은 영상 처리 툴을 실행하는 장치(예: 사용자 장치(110))의 동작들의 예를 보여준다.
도 16을 참고하면, 1601 단계에서, 장치는 입력 동영상을 로딩한다. 사용자가 메뉴 영역을 통해 별도의 파일을 선택하거나, 또는 입력 동영상의 파일을 드래그 앤 드랍(drag and drop)하면, 장치는 입력 동영상을 로딩하고, 그래프 영역에 입력 동영상을 지시하는 노드를 표시할 수 있다. 여기서, 입력 동영상은 영상 처리 알고리즘(1310)에 의해 생성되는, 변형된 얼굴 영상을 포함하는 동영상(예: 변형된 동영상(1302a))일 수 있다.
1602 단계에서, 장치는 입력 동영상을 처리하기 위한 그래프를 생성한다. 그래프는 적어도 하나의 노드, 적어도 하나의 연결선을 포함할 수 있다. 장치는 사용자의 명령들에 따라 그래프를 생성할 수 있다. 구체적으로, 장치는 사용자의 노드 선택을 위한 명령을 감지함에 응하여 그래프 영역에 해당 노드를 추가하고, 노드들 간 연결선을 생성하기 위한 명령을 감지함에 응하여 노드들의 출력 및 입력을 연결시킬 수 있다. 이때, 그래프에 연결되는 노드들 중 하나는 입력 동영상은 영상 처리 알고리즘(1310)에 의해 생성되는, 마스크 데이터(예: 랜드마크 마스크(1320b))를 지시하는 노드일 수 있다.
1603 단계에서, 장치는 그래프에 포함되는 적어도 하나의 노드를 이용하여 입력 동영상을 처리한다. 장치는 입력 동영상으로부터 연결선을 따라가며 각 노드들에 의해 지정된 연산을 순차적으로 수행한다. 다시 말해, 장치는 그래프에 포함되는 적어도 하나의 노드의 기능들의 조합에 의해 정의되는 알고리즘에 따라 입력 동영상을 처리한다. 마지막 노드가 쓰기 기능을 제공하는 노드(예: write 노드)인 경우, 장치는 앞선 적어도 하나의 노드에 기반하여 처리된 영상을 파일로 저장할 수 있다.
도 17은 본 발명의 실시 예에 따라 영상 처리 툴을 이용하여 추가적인 가공을 수행하기 위한 그래프의 예를 도시한다. 도 17은 추가적인 가공을 위한 그래프의 일 예이며, 다르게 구성되는 그래프가 사용될 수도 있다. 도 17을 참고하면, 그래프는 동영상(1302a) 및 마스크(1302b)를 입력으로서 포함하고, 이후 Roto1 노드(1701), Dilate3 노드(1702), Blur3 노드(1703), Grade2 노드(1704), Roto2 노드(1705), Blur2 노드(1706), Grade1 노드(1707), Dilate2 노드(1708), Blur1 노드(1709), Copy1 노드(1710), Dilate1 노드(1711), Grade3 노드(1712)를 포함한다.
먼저, 마스크(1302b)에 의해 지시되는 랜드마크 영역들이 Roto1(1701) 노드에 의해 수정(예: 1이 아니어야 하는 부분을 0으로, 또는 그 반대로 정정하는 연산)됨으로써, 특정 랜드마크 영역(이하 '제1 랜드마크 영역')을 위한 마스크가 생성된다. 이어, 제1 랜드마크 영역은 Dilate3 노드(1702)에 의해 조절(예: 영역 크기의 확대 또는 축소)되고, Blur3 노드(1703)에 의해 흐려진, 즉 블러링된 경계를 가지게 된다. 이후, 동영상(1302a)에서, 조절 및 블러링된 제1 랜드마크 영역에 해당하는 픽셀 값들이 Grade2 노드(1704)에 의해 컬러 정정될 수 있다.
또한, 마스크(1302b)에 의해 지시되는 랜드마크 영역들이 Roto2 노드(1705)에 의해 수정(예: 1이 아니어야 하는 부분을 0으로, 또는 그 반대로 정정하는 연산)됨으로써, 다른 특정 랜드마크 영역(이하 '제2 랜드마크 영역')을 위한 마스크가 생성된다. 이어, 제2 랜드마크 영역은 Blur2 노드(1706)에 의해 흐려진, 즉 블러링된 경계를 가지게 된다. 이후, Grade2 노드(1704)에서 출력된 동영상에서, 블러링된 제2 랜드마크 영역에 해당하는 픽셀 값들이 Grade1 노드(1707)에 의해 컬러 정정될 수 있다. 이때, 제1 랜드마크 영역과 유사하게, 제2 랜드마크 영역의 크기 조절을 위한 Dialte 노드(미도시)가 더 추가될 수 있다.
또한, Roto2 노드(1705)에 의해 생성된 제2 랜드마크 영역의 마스크는 Dilate2 노드(1708)에 의해 크기 조절된 후, Blur1 노드(1709)에 의해 블러링된다. 이후, Copy1 노드(1710)에 의해, 조절 및 블러링된 제2 랜드마크 영역의 마스크는 Grade1 노드(1707)에서 출력된 동영상의 알파(alpha) 채널에 복사되고, 알파 채널에 복사된 마스크는 Dilate1 노드(1711)에 의해 크기 조절된 후, 알파 채널의 마스크에 해당하는 픽셀 값들이 Grade3 노드(1712)에 의해 컬러 정정될 수 있다.
도 17을 참고하여 설명한 실시 예와 같이, 영상 처리 툴을 이용한 추가적인 가공이 수행될 수 있다. 추가적인 가공을 위해, 사용자는 얼굴 변형 알고리즘에 의해 생성되는 변형된 동영상 파일(예: 변형된 동영상(1302a)) 및 마스크 파일(예: 랜드마크 마스크(1302b))를 영상 처리 툴로 로딩하고, 영상 처리 툴의 노드들로 읽혀진 동영상 파일 및 마스크를 처리하기 위한 노드들을 추가함으로서 그래프를 생성한다. 즉, 영상 처리 툴을 이용한 추가적인 가공을 위해, 사용자는 필요한 노드들을 하나하나 선택하고, 노드들을 연결하고, 각 노드의 동작 파라미터를 설정함으로서 그래프를 정의해야 한다.
본 발명의 일 실시 예에 따라, 장치는 사용자의 개입 없이 그래프를 생성하거나 또는 그래프를 추천하는 자동 그래프 생성 기능을 제공할 수 있다. 추가적인 가공은 다양한 작업들을 포함할 수 있으나, 사용자가 주로 사용하는 작업이 구분될 수 있을 것이다. 또는, 수행되는 작업은 영상 속 인물의 특성에 의존할 수 있다. 예를 들어, 홍체의 색상을 변경하는 작업의 경우, 변형된 동영상 속의 인물이 누구냐에 따라 목표 색상이 달라질 수 있다. 따라서, 복수의 동영상 파일들에 대하여 반복적으로 얼굴 변형 알고리즘 및 영상 처리 툴을 사용하는 상황에서, 동영상 속의 인물에 기반하여 적용될 것으로 기대되는 추가적인 가공이 예측될 수 있다.
이에 따라, 장치는 변형된 동영상 파일을 분석하거나 또는 변형 시 적용된 랜드마크들에 대한 조절 값들에 기반하여 변형된 동영상에서의 인물을 식별하고, 해당 인물에 대하여 과거에 수행된 가공을 위한 그래프를 제시할 수 있다. 다시 말해, 얼굴 변형 알고리즘에 의해 동영상 파일 및 마스크 파일이 생성되면, 장치는 동영상 파일 및 마스크 파일에 대응하는 노드들을 생성하고, 얼굴 변형 알고리즘으로부터 제공되는 정보(예: 적용된 조절 값들), 원본 동영상의 분석(예: 인물의 목소리, 원본 동영상의 인물 식별 등), 변형된 동영상의 분석(예: 적용된 조절 값) 중 적어도 하나에 기반하여 과거에 처리한 이력이 있는 인물임을 확인한 후, 확인된 인물에 대응하는 그래프를 생성 및 제안할 수 있다.
이를 위해, 영상 처리 툴을 이용한 추가적인 가공이 수행될 때, 장치는 인물에 대한 특성 및 사용된 그래프에 대한 정보를 데이터베이스에 저장한다. 그리고, 새로운 변형된 동영상 파일 및 마스크 파일이 생성되면, 장치는 변형된 동영상 내의 인물을 식별하고, 데이터베이스에서 적절한 그래프를 탐색 및 제안할 수 있다.
이때, 보다 효과적으로 그래프를 제공하기 위해, 동일한 콘텐츠에 속하는 동영상들을 구분하는 것이 필요하다. 동일 콘텐츠의 동영상이어야 동일 방식의 가공이 유효하다고 볼 수 있기 때문이다. 예를 들어, 장치는 일정 기간 내에 입력되는 동영상들의 처리 이력들을 이용하여 자동 그래프 생성 기능을 제공할 수 있다. 다른 예로, 장치는 사용자에 의해 동일 콘텐츠로 지정된 동영상들의 처리 이력들을 이용하여 자동 그래프 생성 기능을 제공할 수 있다. 이 외 다양한 방법으로 동영상들이 동일 콘텐츠에 속하는지 여부가 판단될 수 있다.
전술한 본 발명의 다양한 실시 예들에 따른 방법은 하드웨어인 컴퓨터가 결합되어 실행되기 위해 컴퓨터 프로그램 또는 모바일 어플리케이션으로 구현되어 매체에 저장될 수 있다. 또는, 본 발명의 실시 예들과 관련하여 설명된 방법 또는 알고리즘의 단계들은 하드웨어로 직접 구현되거나, 하드웨어에 의해 실행되는 소프트웨어 모듈로 구현되거나, 또는 이들의 결합에 의해 구현될 수 있다. 소프트웨어 모듈은 RAM(Random Access Memory), ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리(Flash Memory), 하드 디스크, 착탈형 디스크, CD-ROM, 또는 본 발명이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터 판독가능 기록매체에 상주할 수도 있다. 또한, 알고리즘은 설치 파일 형태로 제작되어 온라인 다운로드 형태로 제공되며, 이를 위해 온라인 소프트웨어 마켓을 통해 접속 가능한 서버에 저장될 수 있다.
한편 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 아니 되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
Claims (5)
- 영상 처리 방법에 있어서,
사용자에 의해 선택된 제1 동영상의 하나의 프레임을 표시하는 단계;
상기 제1 동영상의 상기 프레임에서 인물의 얼굴 영역 및 상기 얼굴의 랜드마크들을 검출하는 단계;
상기 제1 동영상의 모든 프레임들에서 상기 인물의 얼굴 영역을 크롭핑(cropping)하는 단계;
상기 프레임 상에 상기 랜드마크들의 위치를 표시하는 지시자들을 표시하는 단계, 상기 지시자들은 특정점들을 잇는 선으로서, 눈썹 영역, 눈 영역, 입술 영역, 얼굴 윤곽 영역의 경계를 시각화하며;
상기 지시자에 의해 특정되는 상기 랜드마크들 각각에 대한 크기, 간격, 넓이 중 적어도 하나를 대상으로 하는 조절 값들을 입력하기 위한 제1 인터페이스를 표시하는 단계;
상기 사용자의 변형 명령이 감지되면, 상기 제1 인터페이스를 통해 입력되는 상기 조절 값들에 따라 상기 프레임에서 상기 랜드마크들을 변형함으로써 상기 인물의 얼굴 영상을 변형하는 단계;
상기 변형된 얼굴 영상에 적용된 조절 값들의 세트를 상기 제1 인터페이스와 분리된 영역에 표시하는 단계;
사용자의 추출 명령이 감지되면, 상기 제1 동영상 내의 모든 프레임들에서 크롭된 상기 인물의 얼굴 영역들에 포함되는 상기 랜드마크들을 상기 조절 값들에 따라 변형하는 단계;
상기 변형된 랜드마크들을 포함하는 인물의 얼굴 영역들을 상기 제1 동영상에 결합함으로써 제2 동영상을 생성하는 단계를 포함하는 영상 처리 방법.
- 제1항에 있어서,
상기 제1 동영상 내의 모든 프레임들 각각에서 상기 변형된 랜드마크들이 점유하는 영역들을 지시하는 마스크 데이터를 생성하는 단계;
상기 제2 동영상 및 상기 마스크 데이터를 영상 처리 툴로 로딩하는 명령을 검출하는 단계;
상기 명령에 응하여, 상기 영상 처리 툴의 뷰 영역 내에 상기 제2 동영상을 위한 제1 노드 및 상기 마스크 데이터를 위한 제2 노드를 추가하는 단계;
상기 사용자의 명령에 따라, 상기 제1 노드 및 상기 제2 노드에 상기 제2 동영상을 처리하기 위한 적어도 하나의 노드를 추가함으로써 그래프를 생성 및 표시하는 단계;
상기 그래프에 포함되는 상기 적어도 하나의 노드의 기능들을 연결된 순서대로 수행함으로써 상기 그래프에 연결된 제2 동영상 및 상기 마스크 데이터를 처리하는 단계를 더 포함하는 영상 처리 방법.
- 제1항에 있어서,
다른 동영상인 제3 동영상 속 인물이 상기 인물과 동일함을 검출하는 단계;
상기 제2 동영상 속 상기 인물에 대한 변형을 위해 적용된 조절 값들을 확인하는 단계; 및
상기 제3 동영상에 등장하는 인물에 대하여 상기 확인된 조절 값들에 따른 랜드마크들의 변형을 위한 그래프를 생성하는 단계를 더 포함하는 영상 처리 방법.
- 제1항에 있어서,
상기 제1 동영상에 포함된 다른 인물의 얼굴 영역 및 상기 얼굴의 랜드마크들을 검출하는 단계;
상기 인물을 위한 제1 조절 파라미터 세트 및 상기 다른 인물을 위한 제2 조절 파라미터 세트를 생성하는 단계;
상기 인물 및 상기 다른 인물 중 어느 인물에 대한 조절 값을 입력하는지를 지정하기 위한 제3 인터페이스를 표시하는 단계; 및
상기 제3 인터페이스에 의해 선택된 인물의 얼굴 영상에 대하여 상기 제1 인터페이스를 통해 입력된 조절 값들을 적용하는 단계를 더 포함하는 영상 처리 방법.
- 프로세서에 의해 동작됨에 따라 제1항 내지 제4항 중의 어느 한 항에 따른 방법을 실행하는 컴퓨터 판독가능한 저장매체에 저장된 어플리케이션 프로그램.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020230054193A KR102606373B1 (ko) | 2023-04-25 | 2023-04-25 | 영상에서 검출되는 얼굴의 랜드마크를 조절하기 위한 방법 및 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020230054193A KR102606373B1 (ko) | 2023-04-25 | 2023-04-25 | 영상에서 검출되는 얼굴의 랜드마크를 조절하기 위한 방법 및 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR102606373B1 true KR102606373B1 (ko) | 2023-11-24 |
Family
ID=88972175
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020230054193A KR102606373B1 (ko) | 2023-04-25 | 2023-04-25 | 영상에서 검출되는 얼굴의 랜드마크를 조절하기 위한 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102606373B1 (ko) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120096238A (ko) * | 2011-02-22 | 2012-08-30 | 주식회사 모르페우스 | 안면보정 이미지 제공방법 및 그 시스템 |
KR102448551B1 (ko) * | 2022-05-27 | 2022-09-29 | 주식회사 오핌디지털 | 노드 기반 그래프에 의해 구성되는 알고리즘을 이용한 영상 처리 방법 및 장치 |
-
2023
- 2023-04-25 KR KR1020230054193A patent/KR102606373B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120096238A (ko) * | 2011-02-22 | 2012-08-30 | 주식회사 모르페우스 | 안면보정 이미지 제공방법 및 그 시스템 |
KR102448551B1 (ko) * | 2022-05-27 | 2022-09-29 | 주식회사 오핌디지털 | 노드 기반 그래프에 의해 구성되는 알고리즘을 이용한 영상 처리 방법 및 장치 |
Non-Patent Citations (1)
Title |
---|
Jungsik Park et al., ‘A Framework for Real-Time 3D Freeform Manipulation of Facial Video’, Appl. Sci. 2019, 9(21), 4 November 2019.* * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8922628B2 (en) | System and process for transforming two-dimensional images into three-dimensional images | |
US8698796B2 (en) | Image processing apparatus, image processing method, and program | |
US7889913B2 (en) | Automatic compositing of 3D objects in a still frame or series of frames | |
Cole et al. | Directing Gaze in 3D Models with Stylized Focus. | |
AU2003204466B2 (en) | Method and system for enhancing portrait images | |
US8884948B2 (en) | Method and system for creating depth and volume in a 2-D planar image | |
US11425283B1 (en) | Blending real and virtual focus in a virtual display environment | |
WO2001026050A2 (en) | Improved image segmentation processing by user-guided image processing techniques | |
CN111066026B (zh) | 用于向图像数据提供虚拟光调节的技术 | |
US11676252B2 (en) | Image processing for reducing artifacts caused by removal of scene elements from images | |
US11328437B2 (en) | Method for emulating defocus of sharp rendered images | |
CN106447756B (zh) | 用于生成用户定制的计算机生成动画的方法和系统 | |
CN113039576A (zh) | 图像增强系统和方法 | |
KR102448551B1 (ko) | 노드 기반 그래프에 의해 구성되는 알고리즘을 이용한 영상 처리 방법 및 장치 | |
CN116612263B (zh) | 一种感知潜视觉合成一致性动态拟合的方法及装置 | |
KR102606373B1 (ko) | 영상에서 검출되는 얼굴의 랜드마크를 조절하기 위한 방법 및 장치 | |
JP7387029B2 (ja) | ソフトレイヤ化および深度認識インペインティングを用いた単画像3d写真技術 | |
Gallea et al. | Automatic aesthetic photo composition | |
Rosin et al. | Watercolour rendering of portraits | |
CN114902277A (zh) | 用于处理肖像图像帧上的阴影的系统和方法 | |
US11380048B2 (en) | Method and system for determining a spectral representation of a color | |
CA3116076C (en) | Method and system for rendering | |
US20160171665A1 (en) | Smart image enhancements | |
KR102214439B1 (ko) | 저전력 모드를 위한 영상 처리 방법 및 장치 | |
Shekhar | Image and video processing based on intrinsic attributes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |