WO2024101638A1 - 다시점에 관련한 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법, 서버 및 컴퓨터 프로그램 - Google Patents
다시점에 관련한 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법, 서버 및 컴퓨터 프로그램 Download PDFInfo
- Publication number
- WO2024101638A1 WO2024101638A1 PCT/KR2023/013954 KR2023013954W WO2024101638A1 WO 2024101638 A1 WO2024101638 A1 WO 2024101638A1 KR 2023013954 W KR2023013954 W KR 2023013954W WO 2024101638 A1 WO2024101638 A1 WO 2024101638A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- images
- image
- server
- camera
- cube map
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 121
- 238000004590 computer program Methods 0.000 title claims description 15
- 238000007781 pre-processing Methods 0.000 claims abstract description 24
- 238000004422 calculation algorithm Methods 0.000 claims description 48
- 238000012937 correction Methods 0.000 claims description 43
- 238000013135 deep learning Methods 0.000 claims description 16
- 230000001502 supplementing effect Effects 0.000 claims description 3
- 238000013528 artificial neural network Methods 0.000 description 82
- 230000008569 process Effects 0.000 description 42
- 230000006870 function Effects 0.000 description 30
- 238000004891 communication Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 16
- 238000012549 training Methods 0.000 description 13
- 239000011159 matrix material Substances 0.000 description 12
- 230000033001 locomotion Effects 0.000 description 11
- 238000003860 storage Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 7
- 230000009466 transformation Effects 0.000 description 6
- 239000000284 extract Substances 0.000 description 5
- 238000009877 rendering Methods 0.000 description 5
- 241000282326 Felis catus Species 0.000 description 4
- 230000002146 bilateral effect Effects 0.000 description 4
- 238000013527 convolutional neural network Methods 0.000 description 4
- 238000013136 deep learning model Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000010606 normalization Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 210000002569 neuron Anatomy 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 239000013589 supplement Substances 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005094 computer simulation Methods 0.000 description 2
- 230000008451 emotion Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 230000007261 regionalization Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 238000002310 reflectometry Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/08—Volume rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/11—Region-based segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/194—Segmentation; Edge detection involving foreground-background segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/30—Determination of transform parameters for the alignment of images, i.e. image registration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/50—Depth or shape recovery
- G06T7/55—Depth or shape recovery from multiple images
- G06T7/593—Depth or shape recovery from multiple images from stereo images
Definitions
- Various embodiments of the present invention relate to a method for generating a cubemap related to 3D rendering, and more specifically, to a method, server, and computer program for generating a cubemap based on a plurality of images related to multiple perspectives. .
- image-based lighting methods are used to render 3D efficiently and realistically.
- the image-based lighting method is a method of storing the surrounding environment as a texture image in the form of a texture to approximate the reflectivity of the surface of a rendered object (or objects), and using this to calculate reflection characteristics efficiently and quickly.
- the texture image is not a general image, but a cube map (Cube map or Sphere map) or a spherical space expanded into a two-dimensional image.
- a cube map Cube map or Sphere map
- a spherical space expanded into a two-dimensional image When the ray from the camera looking at the object comes in, it is reflected and becomes a cube. It is used as a method of mapping pixel values that reach the map.
- a cube map (cube map or sphere map) may be created through a 360-degree image or panoramic image rather than a general image, or through an image stitching technique.
- 360-degree images or panoramic images must be obtained by using special hardware such as a special lens such as a fisheye lens or a camera equipped with two or more lenses, or by stitching images acquired through a multi-view camera, so special hardware is required. Access to general users who are not equipped may be restricted.
- the problem to be solved by the present invention is to provide a method of generating a cube map based on images acquired through a general camera.
- a method for generating a cube map through a plurality of images related to multiple viewpoints is disclosed.
- the method is performed on one or more processors of a computing device, comprising acquiring a plurality of images taken at various viewpoints centered on a specific object, preprocessing each of the plurality of images, and Obtaining object mask and camera information, acquiring a plurality of background images corresponding to each of the plurality of images based on the object mask corresponding to each image, the plurality of background images and a camera corresponding to each background image It may include obtaining depth information based on information and obtaining a cube map based on the plurality of background images, the camera information corresponding to each background image, and the depth information.
- the plurality of images include multi-viewpoint images acquired using a single camera, and each image is an image captured so that at least a portion of the image forms an overlapping area with adjacent images related to adjacent viewpoints. It can be characterized as:
- the step of acquiring object mask and camera information corresponding to each image through preprocessing of each of the plurality of images includes extracting a feature point from each of the plurality of images, and extracting the feature point from each of the plurality of images. Matching with an image, obtaining initial camera information corresponding to each image based on the matched points, and performing optimization on the initial camera information to obtain the camera information corresponding to each image. You can.
- the step of acquiring the object mask and camera information corresponding to each image through preprocessing of each of the plurality of images includes obtaining an object mask related to the specific object in each image through a deep learning-based algorithm. It may include an extraction step.
- the step of acquiring depth information based on the plurality of background images and camera information corresponding to each image includes obtaining depth information corresponding to each background image by utilizing a Multi-View Stereo (MVS) algorithm. Characterized in extracting, the depth information may include information related to the distance of objects included in each image from the camera.
- MVS Multi-View Stereo
- acquiring the cube map includes projecting the plurality of background images into a three-dimensional space based on camera information and depth information corresponding to each background image, and projecting the plurality of background images onto the three-dimensional space. It may include obtaining the cube map based on a plurality of background images.
- the step of acquiring a cube map based on a plurality of background images projected on the three-dimensional space includes converting the coordinates corresponding to each point in the three-dimensional space into spherical coordinates corresponding to a spherical coordinate system. and generating a cube map based on the spherical coordinates of each point and pixel values corresponding to each point.
- the method further includes performing a correction on the cubemap, wherein performing the correction includes identifying a missing area in the cubemap and adjacent pixels of the missing area. It may include calculating a missing pixel value based on the value and supplementing the missing area using the missing pixel value.
- a server that performs a method for generating a cube map through a plurality of images related to multiple viewpoints.
- the server includes a memory that stores one or more instructions and a processor that executes one or more instructions stored in the memory, and the processor executes the one or more instructions to create a cube map through a plurality of images related to the multi-viewpoints described above. You can perform a method to create .
- a computer program stored in a computer-readable recording medium is disclosed.
- the computer program can be combined with a hardware computer to perform a method for generating a cube map through a plurality of images related to multiple viewpoints.
- a method for generating a cube map based on images acquired through a general camera can be provided. Accordingly, without the additional cost of providing special hardware, the real environment can be rendered more realistically by applying image-based lighting, and furthermore, it can provide the effect of further upgrading the 3D conversion module that takes reflection characteristics into account.
- Figure 1 is an exemplary diagram schematically showing a system for implementing a method for generating a cube map through a plurality of images related to multiple viewpoints related to an embodiment of the present invention.
- Figure 2 is a hardware configuration diagram of a server that performs a method for generating a cube map through a plurality of images related to an embodiment of the present invention.
- Figure 3 shows a flowchart illustrating a method for generating a cubemap using a plurality of images related to an embodiment of the present invention.
- FIG. 4A is an exemplary diagram illustrating a plurality of images related to an embodiment of the present invention.
- FIG. 4B is an exemplary diagram illustrating an object mask corresponding to each image related to an embodiment of the present invention.
- FIG. 4C is an exemplary diagram illustrating depth information calculated corresponding to each of a plurality of images related to an embodiment of the present invention.
- FIG. 4D is an exemplary diagram illustrating depth information calculated corresponding to each background image related to an embodiment of the present invention.
- Figure 5 is an exemplary diagram illustrating a cubemap related to an embodiment of the present invention.
- Figure 6 is an exemplary diagram illustrating the entire process of generating a cube map based on a plurality of images related to an embodiment of the present invention.
- Figure 7 shows a flowchart illustrating a multi-view image-based object of interest recognition method related to an embodiment of the present invention.
- Figure 8 is an exemplary diagram illustrating a plurality of images included in a multi-view image related to an embodiment of the present invention.
- Figure 9 is an example diagram for explaining a process of selecting reference images from multi-view images related to an embodiment of the present invention.
- FIG. 10 is an exemplary diagram illustrating a process of performing correction on an object of interest area extracted corresponding to a multi-view image related to an embodiment of the present invention.
- Figure 11 is an example diagram for explaining a process of generating a cost volume based on reference images related to an embodiment of the present invention and configuring a final object of interest area through this.
- Figure 12 is a schematic diagram showing one or more network functions related to one embodiment of the present invention.
- a component may be, but is not limited to, a process running on a processor, a processor, an object, a thread of execution, a program, and/or a computer.
- an application running on a computing device and the computing device can be a component.
- One or more components may reside within a processor and/or thread of execution.
- a component may be localized within one computer.
- a component may be distributed between two or more computers. Additionally, these components can execute from various computer-readable media having various data structures stored thereon.
- Components may transmit signals, for example, with one or more data packets (e.g., data and/or signals from one component interacting with other components in a local system, a distributed system, to other systems and over a network such as the Internet). Depending on the data being transmitted, they may communicate through local and/or remote processes.
- data packets e.g., data and/or signals from one component interacting with other components in a local system, a distributed system, to other systems and over a network such as the Internet.
- a network such as the Internet
- the term “or” is intended to mean an inclusive “or” and not an exclusive “or.” That is, unless otherwise specified or clear from context, “X utilizes A or B” is intended to mean one of the natural implicit substitutions. That is, either X uses A; X uses B; Or, if X uses both A and B, “X uses A or B” can apply to either of these cases. Additionally, the term “and/or” as used herein should be understood to refer to and include all possible combinations of one or more of the related listed items.
- a computer refers to all types of hardware devices including at least one processor, and depending on the embodiment, it may be understood as encompassing software configurations that operate on the hardware device.
- a computer can be understood to include, but is not limited to, a smartphone, tablet PC, desktop, laptop, and user clients and applications running on each device.
- each step described in this specification is described as being performed by a computer, but the subject of each step is not limited thereto, and depending on the embodiment, at least part of each step may be performed in a different device.
- Figure 1 is an exemplary diagram schematically showing a system for implementing a method for generating a cube map through a plurality of images related to multiple viewpoints related to an embodiment of the present invention.
- a system may include a server 100, a user terminal 200, an external server 300, and a network 400.
- the components shown in FIG. 1 are exemplary, and additional components may exist or some of the components shown in FIG. 1 may be omitted.
- the server 100, the external server 300, and the user terminal 200 according to embodiments of the present invention can mutually transmit and receive data for the system according to embodiments of the present invention through the network 400. there is.
- the network 400 includes Public Switched Telephone Network (PSTN), x Digital Subscriber Line (xDSL), Rate Adaptive DSL (RADSL), Multi Rate DSL (MDSL), and Very Various wired communication systems such as High Speed DSL), Universal Asymmetric DSL (UADSL), High Bit Rate DSL (HDSL), and Local Area Network (LAN) can be used.
- PSTN Public Switched Telephone Network
- xDSL Digital Subscriber Line
- RADSL Rate Adaptive DSL
- MDSL Multi Rate DSL
- Very Various wired communication systems such as High Speed DSL), Universal Asymmetric DSL (UADSL), High Bit Rate DSL (HDSL), and Local Area Network (LAN) can be used.
- UDSL Universal Asymmetric DSL
- HDSL High Bit Rate DSL
- LAN Local Area Network
- the network 400 presented herein includes Code Division Multi Access (CDMA), Time Division Multi Access (TDMA), Frequency Division Multi Access (FDMA), Orthogonal Frequency Division Multi Access (OFDMA), and Single Carrier-FDMA (SC-FDMA).
- CDMA Code Division Multi Access
- TDMA Time Division Multi Access
- FDMA Frequency Division Multi Access
- OFDMA Orthogonal Frequency Division Multi Access
- SC-FDMA Single Carrier-FDMA
- a variety of wireless communication systems may be used, such as FDMA) and other systems.
- the network 400 can be configured regardless of the communication mode, such as wired or wireless, and can be configured in various communication modes such as a personal area network (PAN) and a wide area network (WAN). It may consist of a communication network.
- the network 400 may be the known World Wide Web (WWW), and may use wireless transmission technology used for short-distance communication, such as Infrared Data Association (IrDA) or Bluetooth. .
- IrDA Infrared Data Association
- Bluetooth Bluetooth
- the server 100 (hereinafter referred to as 'server 100'), which provides a method for generating a cubemap through a plurality of images related to multiple perspectives, generates a cubemap based on the plurality of images. can be created.
- the server 100 may acquire a plurality of images related to multiple viewpoints, perform preprocessing, and generate a cube map based on the plurality of preprocessed images.
- the plurality of images related to multiple viewpoints may mean a plurality of images taken from various viewpoints centered on a specific object.
- each of the plurality of images related to the multi-viewpoint may be characterized as an image captured so that at least a portion of it forms an overlapping area.
- a cube map may refer to a texture that can pre-render and store the environment surrounding a certain viewpoint.
- a cube map may be a texture containing screen data that represents the scene around an object as if the object were at the center of a cube.
- preprocessing of a plurality of images includes preprocessing to obtain an object mask related to a specific object included in each image and obtaining camera information (e.g., camera pose and camera parameter information, etc.) corresponding to each image. Preprocessing may be included.
- the server 100 may utilize a deep learning-based algorithm to obtain an object mask related to a specific object in each image.
- the deep learning-based algorithm may refer to a neural network model (eg, CNN model) learned to obtain an object mask related to a specific object from an image.
- the server 100 may calculate camera information corresponding to each image through a Structure From Motion (SFM) algorithm.
- SFM Structure From Motion
- the SFM algorithm may be an algorithm that uses motion information of images captured in two dimensions to backtrack the camera position or direction of the captured image and then structures the relationship between the images and cameras.
- SFM algorithm unique feature points of each image can be obtained, and the feature points and relationships can be matched and calculated for each shooting scene to obtain the camera's position or camera's internal and external parameter information. there is.
- the server 100 may obtain an object mask and camera information corresponding to each image through preprocessing of a plurality of images.
- the server 100 may acquire a plurality of background images corresponding to each image based on the object mask corresponding to each image, and obtain a plurality of background images based on camera information corresponding to each background image.
- depth information can be obtained.
- depth information for each background image may be acquired through a deep learning-based Multi View Stereo (MVS) method.
- MVS Multi View Stereo
- the server 100 projects each image onto a three-dimensional space based on camera information and depth information corresponding to each image, and creates a cube map based on the pixel values of the background images projected onto the three-dimensional space. It can be obtained.
- the present invention generates a cube map based on images acquired through a camera related to special hardware, such as a special lens (e.g., a fisheye) or equipped with two or more lenses, or pre-stitched images.
- special hardware such as a special lens (e.g., a fisheye) or equipped with two or more lenses, or pre-stitched images.
- it may be characterized by generating a cube map based on a plurality of images related to multiple perspectives taken centered on a specific object using a general camera (eg, a single lens). Since this does not utilize a camera equipped with special hardware or a stitched image, it can provide the effect of improving the convenience of creating a cube map for users who do not have separate hardware or expert knowledge.
- a more detailed description of the method of generating a cube map based on a plurality of images related to multiple perspectives of the present invention will be described later with reference to FIG. 3.
- server 100 may be composed of a plurality of computing devices. In other words, a set of multiple nodes may constitute the server 100.
- the server 100 may be a server that provides cloud computing services. More specifically, the server 100 may be a type of Internet-based computing server that provides a cloud computing service that processes information not on the user's computer but on another computer connected to the Internet.
- the cloud computing service may be a service that stores data on the Internet and can be used anytime, anywhere through Internet access without the user having to install necessary data or programs on his or her computer.
- the cloud computing service may be a service that allows simple manipulation of data stored on the Internet. You can easily share and forward with a click.
- cloud computing services not only allow you to simply store data on a server on the Internet, but also allow you to perform desired tasks using the functions of applications provided on the web without having to install a separate program, and allow multiple people to view documents at the same time. It may be a service that allows you to work while sharing. Additionally, cloud computing services may be implemented in at least one of the following forms: Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Software as a Service (SaaS), virtual machine-based cloud server, and container-based cloud server. . That is, the server 100 of the present invention may be implemented in at least one form among the cloud computing services described above. The specific description of the cloud computing service described above is merely an example, and may include any platform for constructing the cloud computing environment of the present invention.
- IaaS Infrastructure as a Service
- PaaS Platform as a Service
- SaaS Software as a Service
- virtual machine-based cloud server virtual machine-based cloud server
- container-based cloud server container-based cloud server.
- the user terminal 200 may refer to any type of node(s) in a system that has a mechanism for communication with the server 100.
- the user terminal 200 is a terminal that can receive cube maps generated corresponding to a plurality of images through information exchange with the server 100, and may refer to a terminal owned by a user.
- the user terminal 200 may be a terminal capable of acquiring a plurality of images related to multiple viewpoints.
- the user terminal 200 is equipped with an image module (e.g., a camera) for acquiring images, and can capture and acquire a plurality of images related to various viewpoints centered on a specific object using the image module. there is.
- an image module e.g., a camera
- the camera module provided in the user terminal 200 may be characterized as a general camera module provided through a single lens. That is, the plurality of images used in the present invention are not 360-degree images (or panoramic images) acquired through a camera module including a special lens (e.g., a fisheye lens) or images on which a separate stitching operation has been performed. , These may be images acquired through a general camera module.
- a special lens e.g., a fisheye lens
- a plurality of images acquired through the user terminal 200 may be transmitted to the server 100, and the server 100 generates a cubemap corresponding to the plurality of images and sends it to the user terminal 200. can be provided.
- images acquired through a general camera module rather than images acquired using special hardware (e.g., panoramic images) or images acquired through a multi-view camera, with separate stitching performed. You can more easily create a cubemap through these.
- the user terminal 200 may be a terminal capable of acquiring a plurality of images related to multiple viewpoints.
- the user terminal 200 is equipped with an image module (e.g., a camera) for acquiring images, and can capture and acquire a plurality of images related to various viewpoints centered on a specific object using the image module. there is.
- an image module e.g., a camera
- the server 100 may recognize an object area of interest from the multi-view image and provide various services. For example, the server 100 may recognize an object area of interest in a multi-view image and restore it in 3D based on this.
- User terminal 200 may refer to any type of entity(s) in the system that has a mechanism for communication with server 100.
- such user terminal 200 includes a personal computer (PC), a notebook (note book), a mobile terminal, a smart phone, a tablet PC, and a wearable device. etc., and may include all types of terminals that can access wired/wireless networks.
- the user terminal 200 may include an arbitrary server implemented by at least one of an agent, an application programming interface (API), and a plug-in.
- the user terminal 200 may include an application source and/or a client application.
- the external server 300 may be connected to the server 100 through the network 400, and the server 100 may perform a method of generating a cubemap through a plurality of images related to multiple viewpoints. Various necessary information/data can be provided, or result data derived from performing a method for creating a cube map using multiple images can be provided, stored, and managed.
- the external server 300 may be a storage server separately provided outside the server 100, but is not limited thereto.
- information stored in the external server 300 may be used as learning data, verification data, and test data for training the artificial neural network of the present invention. That is, the external server 300 may store data for training the artificial intelligence model of the present invention.
- the server 100 of the present invention can construct a plurality of learning data sets based on information received from the external server 300.
- the server 100 may generate a plurality of artificial intelligence models by performing learning on one or more network functions through each of the plurality of learning data sets.
- the external server 300 may be a digital device, such as a laptop computer, a notebook computer, a desktop computer, a web pad, or a mobile phone, equipped with a processor and equipped with memory and computing power.
- the external server 300 may be a web server that processes services.
- the types of servers described above are merely examples and the present disclosure is not limited thereto.
- the hardware configuration of the server 100 that performs a method for generating a cubemap using a plurality of images will be described.
- Figure 2 is a hardware configuration diagram of a server that performs a method for generating a cube map through a plurality of images related to an embodiment of the present invention.
- a memory 120 that loads the program 151
- bus 130 that loads the program 151
- a communication interface 140 a communication interface 140
- storage 150 that stores the computer program 151.
- FIG. 2 only components related to the embodiment of the present invention are shown in Figure 2. Accordingly, anyone skilled in the art to which the present invention pertains will know that other general-purpose components may be included in addition to the components shown in FIG. 2.
- the processor 110 can typically process the overall operation of the server 100.
- the processor 110 provides or processes appropriate information or functions to the user or user terminal by processing signals, data, information, etc. input or output through the components discussed above or by running an application program stored in the memory 120. can do.
- the processor 110 may perform operations on at least one application or program for executing methods according to embodiments of the present invention, and the server 100 may include one or more processors.
- the processor 110 may be composed of one or more cores, such as a central processing unit (CPU) of a computing device, and a general purpose graphics processing unit (GPGPU). , may include a processor for data analysis and deep learning, such as a tensor processing unit (TPU).
- cores such as a central processing unit (CPU) of a computing device, and a general purpose graphics processing unit (GPGPU).
- GPU general purpose graphics processing unit
- TPU tensor processing unit
- the processor 110 may read a computer program stored in the memory 120 and provide a method for generating a cubemap using a plurality of images according to an embodiment of the present invention.
- the processor 110 includes random access memory (RAM) (not shown) and read memory (ROM) that temporarily and/or permanently store signals (or data) processed within the processor 110. -Only Memory, not shown) may be further included. Additionally, the processor 110 may be implemented in the form of a system on chip (SoC) that includes at least one of a graphics processing unit, RAM, and ROM.
- SoC system on chip
- Memory 120 stores various data, commands and/or information. Memory 120 may load a computer program 151 from storage 150 to execute methods/operations according to various embodiments of the present invention. When the computer program 151 is loaded into the memory 120, the processor 110 can perform the method/operation by executing one or more instructions constituting the computer program 151.
- the memory 120 may be implemented as a volatile memory such as RAM, but the technical scope of the present disclosure is not limited thereto.
- the bus 130 provides communication functions between components of the server 100.
- the bus 130 may be implemented as various types of buses, such as an address bus, a data bus, and a control bus.
- the communication interface 140 supports wired and wireless Internet communication of the server 100. Additionally, the communication interface 140 may support various communication methods other than Internet communication. To this end, the communication interface 140 may be configured to include a communication module well known in the technical field of the present invention. In some embodiments, communication interface 140 may be omitted.
- Storage 150 may store the computer program 151 non-temporarily. When performing a process for creating a cubemap through a plurality of images through the server 100, the storage 150 can store various information necessary to provide a process for creating a cubemap through a plurality of images. there is.
- the storage 150 is a non-volatile memory such as Read Only Memory (ROM), Erasable Programmable ROM (EPROM), Electrically Erasable Programmable ROM (EEPROM), flash memory, a hard disk, a removable disk, or a device well known in the art to which the present invention pertains. It may be configured to include any known type of computer-readable recording medium.
- ROM Read Only Memory
- EPROM Erasable Programmable ROM
- EEPROM Electrically Erasable Programmable ROM
- flash memory a hard disk, a removable disk, or a device well known in the art to which the present invention pertains. It may be configured to include any known type of computer-readable recording medium.
- the computer program 151 when loaded into the memory 120, may include one or more instructions that cause the processor 110 to perform methods/operations according to various embodiments of the present invention. That is, the processor 110 can perform the method/operation according to various embodiments of the present invention by executing the one or more instructions.
- the computer program 151 acquires a plurality of images taken from various viewpoints centered on a specific object, and obtains an object mask and camera information corresponding to each image through preprocessing for each of the plurality of images. obtaining a plurality of background images corresponding to each of the plurality of images based on an object mask corresponding to each image, obtaining depth information based on the plurality of background images and camera information corresponding to each image. and one or more instructions for performing a method for generating a cubemap through a plurality of images, including obtaining a cubemap based on a plurality of background images, camera information corresponding to each background image, and depth information. can do.
- the computer program 151 includes acquiring a multi-view image including a plurality of images related to various viewpoints, extracting an object area of interest from the multi-view image, and performing correction on the extracted object area of interest.
- Multi-view image-based object-of-interest recognition comprising the steps of performing, selecting a reference image from the multi-view image, generating a cost volume based on the reference image, and constructing a final object-of-interest region based on the cost volume. It may contain one or more instructions to perform a method.
- the steps of the method or algorithm described in connection with embodiments of the present invention may be implemented directly in hardware, implemented as a software module executed by hardware, or a combination thereof.
- the software module may be RAM (Random Access Memory), ROM (Read Only Memory), EPROM (Erasable Programmable ROM), EEPROM (Electrically Erasable Programmable ROM), Flash Memory, hard disk, removable disk, CD-ROM, or It may reside on any type of computer-readable recording medium well known in the art to which the present invention pertains.
- the components of the present invention may be implemented as a program (or application) and stored in a medium in order to be executed in conjunction with a hardware computer.
- Components of the invention may be implemented as software programming or software elements, and similarly, embodiments may include various algorithms implemented as combinations of data structures, processes, routines or other programming constructs, such as C, C++, , may be implemented in a programming or scripting language such as Java, assembler, etc.
- Functional aspects may be implemented as algorithms running on one or more processors.
- FIGS. 3 to 7 a method for generating a cubemap using a plurality of images performed by the server 100 will be described in detail later.
- Figure 3 shows a flowchart illustrating a method for generating a cubemap using a plurality of images related to an embodiment of the present invention.
- the order of the steps shown in FIG. 3 may be changed as needed, and at least one step may be omitted or added. That is, the following steps are only an example of the present invention, and the scope of the present invention is not limited thereto.
- a method for generating a cube map using a plurality of images may include a step (S110) of acquiring a plurality of images taken from various viewpoints centered on a specific object.
- acquiring a plurality of images may involve receiving or loading data stored in memory 120.
- Acquiring a plurality of images may involve receiving or loading a plurality of learning data from another storage medium, another computing device, or a separate processing module within the same computing device based on wired/wireless communication means.
- a plurality of images may be received from a user terminal.
- the plurality of images may include multi-view images acquired using a camera provided through a single lens.
- Each image may include a specific object, and may be an image taken so that at least a portion of it forms an overlapping area with adjacent images related to adjacent viewpoints. That is, in the present invention, the plurality of images that are the basis for creating a cube map may be images taken centered on a specific object, and each image may form an overlapping area with each other.
- These plural images can be obtained through a user terminal.
- the user terminal 200 may be equipped with a camera module, and may acquire a plurality of images through the camera module and transmit them to the server 100.
- the user may obtain a plurality of images from various viewpoints based on a specific object (eg, a flower pot) as shown in FIG. 4A through the user terminal 200.
- a plurality of images acquired through the user terminal 200 may include images taken from various viewpoints centered on a specific object (eg, a flower pot).
- the server 100 may determine the appropriateness of cube map generation based on the presence or absence of a specific object in each of the plurality of images and the presence or absence of an overlapping area between the plurality of images.
- suitability determination may mean determining whether a plurality of acquired images are suitable for creating a cube map.
- the step of acquiring a plurality of images includes acquiring images taken according to the movement of the user terminal, identifying whether a specific object exists in each image, and removing images in which a specific object does not exist. Steps may be included.
- the server 100 may determine whether each image includes a specific object.
- the specific central object must be included in each image. For example, if an image that does not contain a specific object is used, the accuracy of cubemap generation may be reduced. Accordingly, the server 100 may determine that images that do not contain a specific object are not appropriate for creating a cube map.
- the server 100 may exclude images determined to be unsuitable for cubemap generation. That is, the server 100 can select only images containing a specific object that is the center of the images during the cubemap creation process and use them to generate the cubemap.
- the step of acquiring a plurality of images includes acquiring images taken according to the movement of the user terminal, identifying whether an overlapping area exists between adjacent images, and determining whether an overlapping area between adjacent images exists. It may include determining whether the size of the area is greater than or equal to a preset threshold and, if the size of the overlapping area is less than the threshold, transmitting a direction for obtaining an additional image to the user terminal.
- a plurality of images are images used to create a cube map, at least some of them may have to be photographed to have an overlapping area.
- the size of the overlapping area relative to a preset threshold may be related to the formation of an area overlapping 70% or more with an adjacent image. For example, if the overlapping area between adjacent images is 70% or more, the size of the overlapping area may be greater than a preset threshold.
- the server 100 may create a direction for obtaining an additional image and transmit it to the user terminal.
- the direction for acquiring additional images may include information to take images by moving to various angles, such as left, right, up, and down, based on a specific image.
- the server 100 forms an overlapping area of a certain amount or more with the first image based on the first image. You can create directions that allow you to capture images at an angle. The user may obtain additional images through additional shooting based on the direction displayed on the user terminal 200 and transmit them to the server 100.
- the server 100 determines whether additional images (e.g., images with a certain or more overlapping area) necessary for creating a cubemap are needed based on the overlapping area between adjacent images, and if it is determined that additional images are needed. , you can create a direction to acquire additional images. The user can easily take additional images and transmit them to the server 100 according to the direction displayed on the user's terminal, and the server 100 can create a cube map using these supplemented images.
- additional images e.g., images with a certain or more overlapping area
- a method for generating a cube map through a plurality of images includes a step (S120) of acquiring object mask and camera information corresponding to each image through preprocessing of each of the plurality of images. It can be included.
- preprocessing for a plurality of images may include preprocessing to obtain an object mask related to a specific object included in each image and preprocessing to obtain camera information corresponding to each image.
- the server 100 may utilize a deep learning-based algorithm to obtain an object mask related to a specific object in each image.
- a deep learning-based algorithm may refer to a neural network model (eg, CNN model) learned to obtain an object mask related to a specific object from an image.
- Deep learning-based algorithms for example, consider similar pixels as one unit based on features representing one region, and use a region-based regionalization method that divides regions with the same properties and uses edge in the image. It is possible to obtain an object mask related to a specific object in an image through a borderline-based regionalization method that extracts meaningful regions using the borderline information obtained after extracting ).
- the server 100 may obtain camera information corresponding to each image by utilizing a structure from motion (SFM) algorithm.
- SFM structure from motion
- the SFM algorithm may be an algorithm that uses motion information of images captured in two dimensions to backtrack the camera position or direction of the captured image and then structures the relationship between the images and cameras.
- This SFM algorithm unique feature points of each image can be obtained, and the position of the camera can be obtained by matching and calculating the feature points and relationships for each shooting scene.
- the step of acquiring the object mask and camera information corresponding to each image through preprocessing of each of the plurality of images includes extracting feature points from each of the plurality of images, matching the extracted feature points with adjacent images, It may include obtaining initial camera information corresponding to each image based on the matched points, and obtaining camera information corresponding to each image by performing optimization on the initial camera information.
- the server 100 may extract feature points from each image and match the extracted feature points with adjacent images. As the feature points of each image are matched with the feature points of adjacent images, initial camera information corresponding to all images can be calculated.
- the initial camera information may include information about camera pose and camera parameters (internal parameters and external parameters).
- the server 100 can obtain camera information by optimizing initial camera information through bundle adjustment.
- bundle adjustment may refer to an algorithm that simultaneously optimizes the 3D position that can be estimated based on feature points and the 3D linked motion between each image. That is, the server 100 can acquire camera information through a process of calculating initial camera information and optimizing it by linking and matching the feature points of each image.
- a method for generating a cube map through a plurality of images includes the step of acquiring a plurality of background images corresponding to each of the plurality of images based on an object mask corresponding to each image (S130). ) may include.
- a background image excluding the specific object is required.
- the object mask can be calculated from the image, and the background image can be extracted using the mask image corresponding to the object mask.
- a mask image may be extracted through an object mask related to a specific object. In this case, as the mask image is extracted, a background image for each viewpoint is obtained.
- a method for generating a cubemap through a plurality of images includes a step (S140) of acquiring depth information based on a plurality of background images and camera information corresponding to each image. You can.
- the server 100 may obtain depth information based on camera information corresponding to each image.
- the step of acquiring depth information based on a plurality of background images and camera information corresponding to each image may be characterized by extracting depth information corresponding to each background image using an MVS algorithm.
- the MVS algorithm is an algorithm that obtains sophisticated depth information by utilizing camera position information based on multiple images from multiple viewpoints acquired at random angles of view.
- the present invention can predict depth information corresponding to an image for each viewpoint by utilizing the UniMVSNet algorithm among the MVS algorithms.
- the server 100 can obtain accurate depth information corresponding to the image for each viewpoint through the deep learning-based MVS algorithm.
- FIG. 4C exemplarily expresses the distance (i.e., depth) between the camera and objects through color density. As shown in FIG. 4C, depth information can be obtained corresponding to the image for each viewpoint. As this depth information is acquired, the pixel points of each image can be projected onto three-dimensional space.
- the present invention may be characterized in that depth information corresponding to the background image for each viewpoint is obtained in response to background images in which a specific object has been removed through an object mask.
- a plurality of images are captured based on a specific object in order to identify the relationship between each image, but the specific object must be excluded from the generated cube map.
- the server 100 can obtain background images by removing a specific object from each image through an object mask, and obtain depth information corresponding to each of the obtained background images. That is, as shown in FIG. 4D, depth information can be obtained corresponding to each background image for each viewpoint.
- a method for generating a cubemap through a plurality of images includes the step of acquiring a cubemap based on a plurality of background images, camera information corresponding to each background image, and depth information (S150) ) may include.
- a cube map may refer to a texture that can pre-render and store the environment surrounding a certain viewpoint.
- a cube map may be a texture containing screen data that represents the scene around an object as if the object were at the center of a cube.
- acquiring a cube map may include projecting a plurality of background images into a three-dimensional space based on camera information and depth information corresponding to each background image.
- the server 100 may reproject the background image into a 3D point cloud using camera information and depth information corresponding to each background image.
- the method for calculating points in 3D space may be as follows:
- d represents the depth value
- u, v are pixel coordinates
- k is a camera internal parameter
- camera external parameters rotation R, movement t
- the image coordinate system can be converted to a camera coordinate system by multiplying the inverse matrix of the camera internal parameters with the pixel coordinates including the depth value, and then converted to the world coordinate system by matrix multiplying the inverse matrix of the camera external parameters again.
- each background image can be projected onto a three-dimensional space using the formula above.
- acquiring the cube map may include acquiring the cube map based on a plurality of background images projected on a three-dimensional space.
- the step of acquiring a cube map based on a plurality of background images projected on a three-dimensional space includes converting the coordinates corresponding to each point in the three-dimensional space into spherical coordinates corresponding to a spherical coordinate system. can do.
- the server 100 can convert the points re-projected into the three-dimensional space into a spherical coordinate system and re-express them as points in the sphere space.
- the formula for converting 3D Cartesian coordinates to spherical coordinates is as follows.
- the step of acquiring a cube map based on a plurality of background images projected on a three-dimensional space may include generating a cube map based on the spherical coordinates of each point and the pixel value corresponding to each point. there is.
- the server 100 converts the points reprojected onto the three-dimensional space into spherical coordinates.
- the server 100 may map each point into a cubemap image based on the spherical coordinates and each pixel value, and the mapped result image, that is, the cubemap, may be as shown in FIG. 5. .
- the server 100 may perform inpainting on the empty space of the generated cubemap.
- the final generated cubemap may contain unobserved empty space. Accordingly, the server 100 can perform correction on the cubemap.
- the method for generating a cubemap using a plurality of images may further include performing correction on the cubemap.
- performing correction may include identifying a missing area in the cubemap.
- the missing area (or empty space) may be an area related to a portion that has not been identified through a plurality of images.
- the server 100 may identify a missing area related to an unobserved empty space on the cubemap.
- performing correction may include calculating a missing pixel value based on adjacent pixel values of the missing area and supplementing the missing area using the missing pixel value.
- the server 100 can calculate the missing pixel value to be similar to adjacent pixel values, and use this to supplement the missing area to generate a natural cubemap.
- the server 100 can interpolate through adjacent pixels of the empty space to calculate a value for the empty space and supplement the corresponding area based on this. .
- This has the advantage of being able to create and provide a natural cubemap by making up for unobserved parts.
- the server 100 may perform pre-processing on a plurality of acquired images to obtain an object mask and camera information corresponding to each image. Additionally, the server 100 may utilize the MVS algorithm to obtain depth information corresponding to each image based on camera information corresponding to each image.
- the server 100 may obtain a background image corresponding to each image by extracting an object mask corresponding to each image, and obtain a background image corresponding to each background image based on the camera information of each background image. Depth information is obtained. Accordingly, images (eg, background images) with a specific object removed from each image and depth information corresponding thereto can be obtained.
- the server 100 may generate a cube map using these background images and depth information and camera information corresponding to each background image. Specifically, the server 100 can project the two-dimensional image back into a three-dimensional space through the depth information and camera information of each background image. Additionally, the server 100 can convert 3D space point coordinates into spherical coordinates and re-express them as points in spherical space. Accordingly, the server 100 can map the cubemap image through the spherical coordinates of each point and each pixel value.
- the server 100 may perform correction for unobserved empty space in the generated cubemap. Specifically, the server 100 may identify a missing area in the cubemap, interpolate through adjacent pixels of the area, calculate a value for the empty space, and supplement the area based on this. That is, the server 100 can generate and provide a natural cube map through inpainting of empty space.
- the present invention is provided with special hardware equipment (e.g., a special lens) to acquire a panoramic image based on cube map generation, or through a general camera without a separate stitching operation on the obtained images.
- a cube map can be created and provided based on the acquired images. This allows users to render the real environment more realistically, and can further enhance the 3D conversion module considering reflection characteristics.
- the server 100 of the present invention may be characterized in that it recognizes an object of interest based on multi-view images related to multiple viewpoints.
- the server 100 may estimate the object area of interest from a multi-view image including a plurality of images related to various viewpoints.
- the object of interest area relates to at least one of the objects included in the image, and may mean, for example, an area where an object that can be separated from a wall or a floor is located.
- the object of interest may be a desk, chair, cup, vacuum cleaner, etc. included in the image.
- the detailed description of the object of interest described above is merely an example, and the present invention is not limited thereto.
- the server 100 may identify an object area of interest in a multi-view image using an object recognition model.
- the object recognition model may be a deep learning model that recognizes an object of interest based on an image.
- the server 100 may perform correction on the estimated object area of interest corresponding to the multi-view image.
- the recognition accuracy of the finally predicted object area of interest may be improved.
- the output of the object recognition model may be in an approximate form.
- the server 100 may perform correction using a deep learning network to represent the object area of interest in more detail.
- the server 100 may process the output of the object recognition model as an input to a correction network function and output a corrected object area of interest corresponding to the object area of interest.
- the network structure used in deep learning networks for correction is generally a structure that takes a rough mask as input, passes it through a convolutional network, applies sigmoid, goes through a normalization process, and outputs a more detailed mask. .
- the present invention can perform more precise correction by configuring the output layer of the object recognition model through tanh.
- tanh since it has a value between -1 and 1, it has the advantage of not only reducing inaccuracies, but also enabling correction to prevent unexpected parts from appearing in the previous network.
- the server 100 may generate a cost volume by selecting a reference image from the multi-view image.
- the reference image may be an image related to viewpoints to be referenced for the frame (or viewpoint) to be predicted.
- the server 100 can obtain depth information and camera information corresponding to each of a plurality of images included in the multi-view image, and select a reference image based on the depth information and camera information.
- the depth information may include information related to the distance of objects included in each image from the camera
- the camera information may include information about camera pose information or camera parameters.
- camera parameter information may include camera internal parameter information and camera external parameter information.
- Camera internal parameter information may include information related to focal length, principal point, and asymmetry coefficient.
- Camera external parameter information is a parameter for describing the transformation relationship between the camera coordinate system and the world coordinate system, and can be expressed as rotation and translation transformation between the two coordinate systems.
- the server 100 may warp reference images based on depth information and camera information and convert them into predicted viewpoints. In other words, the server 100 may generate distorted images by distorting reference images to be used as reference for the viewpoint to be predicted to the predicted viewpoint. Additionally, the server 100 may create a cost volume by stacking distorted images. In other words, the server 100 may distort reference images related to surrounding viewpoints using depth information and camera information (eg, camera external parameter information), convert them into predicted viewpoints, and stack them to create a cost volume. Since the cost volume is a set of images converted to the same viewpoint, using it can capture as many matching points as possible.
- depth information and camera information eg, camera external parameter information
- the server 100 may configure the final object of interest area based on the cost volume generated corresponding to the multi-view image.
- a cost volume is created by stacking converted (or distorted) images based on the same predicted viewpoint, and an object area of interest is formed based on the generated cost volume, enabling consistent object recognition even in images from various viewpoints. It can happen. This has the advantage of providing consistent prediction results in response to multi-view images related to multiple viewpoints.
- Figure 7 shows a flowchart illustrating a multi-view image-based object of interest recognition method related to an embodiment of the present invention.
- the order of the steps shown in FIG. 7 may be changed as needed, and at least one step may be omitted or added. That is, the following steps are only an example of the present invention, and the scope of the present invention is not limited thereto.
- a method for recognizing an object of interest based on a multi-view image may include acquiring a multi-view image including a plurality of images related to various viewpoints (S210).
- acquiring a multi-view image may involve receiving or loading data stored in memory 120. Acquisition of a multi-view image may involve receiving or loading a plurality of learning data from another storage medium, another computing device, or a separate processing module within the same computing device based on wired/wireless communication means. For example, a multi-view image may be received from a user terminal.
- the multi-view image of the present invention may include a plurality of images acquired corresponding to various viewpoints. For example, it may include images taken at various angles based on a specific object.
- a multi-view image may include images related to multiple viewpoints acquired through a camera module.
- each of the plurality of images included in the multi-view image may include a specific object and may be an image captured so that at least a portion of the images form an overlapping area with adjacent images related to adjacent viewpoints. there is.
- the plurality of images may be images captured around a specific object, and may be characterized in that each image forms an overlapping area.
- the multi-view image 500 may include a plurality of images acquired from various viewpoints based on a specific object (eg, a flower pot).
- a method for recognizing an object of interest based on a multi-view image may include extracting an object of interest area from the multi-view image (S220).
- the step of extracting the object area of interest may include identifying the object area of interest corresponding to each of the plurality of images using an object recognition model.
- the object recognition model may be a deep learning model that recognizes an object of interest based on a single viewpoint image.
- the object recognition model is -Can be Net.
- -Net may be a model created by overlapping the U-shaped encoder-decoder architecture on the existing deep learning architecture.
- -Net may include 6 encoders, 5 decoder sigmoid functions, and convolution layers.
- -Net can be created by sequentially connecting a plurality of encoders and a plurality of decoders in a U structure.
- the U-shaped architecture allows high-resolution images to be acquired as the network becomes deeper. In other words, the U-overlapping architecture can enable the object recognition model to learn global features well.
- the server 100 may process each of the plurality of images included in the multi-view image as input to an object recognition model to identify an object area of interest corresponding to each image.
- an object recognition model may recognize an object area of interest corresponding to each image.
- the object area of interest may appear white within an image space of the same size as the input image, as shown in FIGS. 9 and 10.
- the multi-view image-based object of interest recognition method may include performing correction on the extracted object of interest area (S230).
- the output of the object recognition model may be in an approximate form. Accordingly, the server 100 may perform correction using a deep learning network to represent the object area of interest in more detail.
- performing correction may include processing the output of the object recognition model as an input to a correction network function and outputting a corrected object area of interest corresponding to the object area of interest.
- the output of the object recognition model eg, object area of interest extracted corresponding to each image
- the correction network function may be input to the correction network function.
- the correction network function may be characterized in that it performs correction on the image using the object area of interest corresponding to the image related to the previous input as a guide.
- the correction network function can enable the object recognition model to better predict frames along a continuous video stream.
- the network structure for correction used in most deep learning networks passes a rough prediction mask as input, passes it through a convolutional network, applies sigmoid to go through a normalization process, and outputs a more detailed mask.
- the normalization process involves precisely reducing the previously imprecise mask, so precise correction may be difficult.
- sigmoid since it is a function with a value between 0 and 1, it can reduce masks that were previously inaccurate, but it cannot create (or reconstruct) areas that were not properly observed.
- the present invention may be characterized by providing a correction network (i.e., correction network function) that uses the mask of the frame related to the previous input as a guide.
- a correction network i.e., correction network function
- the correction network function after convolution, it is made from -1 to 1 using tanh rather than sigmoid, so that not only can the erroneous part be erased, but it can also be corrected so that unexpected parts appear in the previous network.
- the correct answer label for learning the correction network function can be expressed in pytorch-based style pseudocode as follows.
- This network structure may be as shown in FIG. 10. That is, the correction network function can perform correction based on the mask of the previous frame, so more precise correction may be possible.
- the output layer using tanh, it is possible to perform not only correction for erasing specific parts, but also correction for filling in unobserved parts. This has the advantage of being able to display the object area of interest in more detail.
- a method for recognizing an object of interest based on a multi-view image may include selecting a reference image from the multi-view image (S240).
- the reference image may be an image related to viewpoints to be referenced for the frame to be predicted.
- the server 100 may select a reference image from a multi-view image based on whether depth information and camera information corresponding to the multi-view image exist. If depth information and camera information corresponding to the multi-view image exist, the server 100 may select reference images through the corresponding depth information and camera information. In one embodiment, when depth information and camera information corresponding to the multi-view image do not exist, the server 100 may utilize a deep learning model to obtain depth information and camera information corresponding to the multi-view image. The server 100 may process each image as an input to a deep learning model to obtain depth information and camera information corresponding to each image. In a specific embodiment, depth information and camera information corresponding to each of a plurality of images may be obtained using COLMAP, one of the Structure From Motion (SfM) libraries.
- SfM Structure From Motion
- selecting a reference image from a multi-view image may include obtaining depth information and camera information corresponding to the multi-view image.
- acquiring camera information includes extracting feature points from each of a plurality of images, matching the extracted feature points with adjacent images, and generating initial camera information corresponding to each image based on the matched points. It may include obtaining camera information corresponding to each image by optimizing the initial camera information and obtaining camera information.
- the server 100 may extract feature points from each image and match the extracted feature points with adjacent images. As the feature points of each image are matched with the feature points of adjacent images, initial camera information corresponding to all images can be calculated.
- the initial camera information may include information about camera pose and camera parameters (internal parameters and external parameters).
- the server 100 can obtain camera information by optimizing initial camera information through bundle adjustment.
- bundle adjustment may refer to an algorithm that simultaneously optimizes the 3D position that can be estimated based on feature points and the 3D linked motion between each image. That is, the server 100 can acquire camera information through a process of calculating initial camera information and optimizing it by linking and matching the feature points of each image.
- acquiring depth information may include extracting depth information corresponding to each image using a Multi-View Stereo (MVS) algorithm.
- the depth information may include information related to the distance of objects included in each image from the camera.
- the server 100 may extract depth information corresponding to each image using the MVS algorithm.
- the MVS algorithm is an algorithm that obtains sophisticated depth information by utilizing camera position information based on multiple images from multiple viewpoints acquired at random angles of view.
- the present invention can predict depth information corresponding to an image for each viewpoint by utilizing the UniMVSNet algorithm among the MVS algorithms. That is, the server 100 can obtain depth information corresponding to the image for each viewpoint through the deep learning-based MVS algorithm.
- depth information can be exemplarily expressed through a difference in color density according to the distance (i.e., depth) between the camera and objects. Through this depth information, it is possible to predict the distance between each object and the camera.
- selecting a reference image from a multi-view image may include selecting a reference image based on depth information and camera information.
- camera parameter information may include camera internal parameter information and camera external parameter information.
- Camera internal parameter information may include information related to focal length, principal point, and asymmetry coefficient.
- Camera external parameter information is a parameter for explaining the transformation relationship between the camera coordinate system and the world coordinate system, and can be expressed as rotation and translation transformation between the two coordinate systems.
- the server 100 may extract rotation and movement matrices among camera external parameters and calculate the distance L1 between each matrix at each viewpoint.
- server 100 may select a reference image based on the distance L1. For example, images with the minimum distance L1 can be selected as reference images. In this case, it may be important for the two viewpoints to look in the same direction because, depending on the size of the object, a viewpoint on the opposite side may be selected based on simple distance alone. Accordingly, the server 100 may assign a weight to the rotation matrix so that the influence of the rotation matrix increases. In a specific embodiment, the server 100 may set the weights of the rotation matrix and the translation matrix to 0.7 and 0.3, respectively.
- the specific numerical descriptions related to the weights of each matrix described above are only examples, and the present invention is not limited thereto.
- a method for recognizing an object of interest based on a multi-view image may include generating a cost volume based on a reference image (S250). Since the cost volume is a set of images converted to the same viewpoint, using it can capture as many matching points as possible.
- the step of generating a cost volume may include distorting reference images based on depth information and camera information and converting them into predicted viewpoints, and generating a cost volume by stacking images converted to predicted viewpoints. .
- the server 100 may warp reference images based on depth information and camera information and convert them into predicted viewpoints.
- the server 100 may calculate a conversion matrix (homography) from the surrounding viewpoint to the predicted viewpoint using the depth information of each image and external camera parameters.
- This transformation matrix can be calculated as follows.
- the surrounding viewpoints can be distorted and converted to the predicted viewpoint.
- an image from a peripheral perspective viewed from a distorted perspective may be created.
- the server 100 may select only information with high reliability among depth information. For example, only information with reliability above a certain level among depth information can be used to distort the reference image and convert it into a predicted viewpoint. In this case, since only highly reliable information is selected, errors can be minimized by using only accurate distortion points.
- the server 100 may generate distorted images by distorting reference images to be used as reference for the viewpoint to be predicted to the predicted viewpoint. Additionally, the server 100 may create a cost volume by stacking distorted images. In other words, the server 100 may distort reference images related to surrounding viewpoints using depth information and camera information (eg, camera external parameter information), convert them into predicted viewpoints, and create a cost volume by stacking them. Since the cost volume is a set of images converted to the same viewpoint, using it can capture as many matching points as possible.
- depth information and camera information eg, camera external parameter information
- server 100 may generate an image with one channel based on the generated cost volume. Referring to FIG. 11, the server 100 may generate an image with one channel by weighting the cost volume according to the distance between each image.
- the multi-view image-based object of interest recognition method may include configuring a final object of interest area based on the cost volume (S260).
- the step of configuring the final object of interest area may include configuring the final object of interest area by correcting the outline of the image at the predicted time point through a noise removal algorithm.
- the final object area of interest can be constructed by utilizing the edges of the RGB image at the prediction time through the joint Bilateral Filter provided in the Open CV package.
- Joint Bilateral Filter may be an algorithm for removing noise from depth images.
- the joint bilateral filter generates a joint histogram by applying a Gaussian function to the brightness difference value and the inter-pixel distance value of the color image of the reference pixel and its surrounding pixels, respectively, and fills the average value with the depth value of the reference pixel.
- noise can be removed from depth images. That is, as shown in FIG. 11, as the image related to the cost volume with one channel is processed as an input to the joint Bilateral Filter, noise in the image corresponding to the cost volume can be removed, which is used to recognize the object area of interest. It can contribute to improving accuracy.
- a cost volume is created by stacking converted (or distorted) images based on the same predicted viewpoint, and an object area of interest is formed based on the generated cost volume, enabling consistent object recognition even in images from various viewpoints. It can happen.
- This has the advantage of providing consistent prediction results in response to multi-view images related to multiple viewpoints.
- Figure 12 is a schematic diagram showing one or more network functions related to one embodiment of the present invention.
- a neural network can generally consist of a set of interconnected computational units, which can be referred to as “nodes”. These “nodes” may also be referred to as “neurons.”
- a neural network consists of at least one node. The nodes (or neurons) that make up neural networks may be interconnected by one or more “links.”
- a deep neural network may refer to a neural network that includes multiple hidden layers in addition to the input layer and output layer.
- Deep neural networks allow you to identify latent structures in data. In other words, it is possible to identify the potential structure of a photo, text, video, voice, or music (e.g., what object is in the photo, what the content and emotion of the text are, what the content and emotion of the voice are, etc.) .
- Deep neural networks include convolutional neural networks (CNN), recurrent neural networks (RNN), auto encoders, generative adversarial networks (GAN), and restricted Boltzmann machines (RBM). machine), deep belief network (DBN), Q network, U network, Siamese network, etc.
- CNN convolutional neural networks
- RNN recurrent neural networks
- GAN generative adversarial networks
- RBM restricted Boltzmann machines
- DNN deep belief network
- Q network Q network
- U network Siamese network
- a neural network can be trained in at least one of supervised learning, unsupervised learning, and semi-supervised learning. Learning of a neural network is intended to minimize errors in output.
- learning data is repeatedly input into the neural network, the output of the neural network and the error of the target for the learning data are calculated, and the error of the neural network is transferred from the output layer of the neural network to the input layer in the direction of reducing the error. This is the process of updating the weight of each node in the neural network through backpropagation.
- teacher learning learning data in which the correct answer is labeled in each learning data is used (i.e., labeled learning data), and in the case of non-teacher learning, the correct answer may not be labeled in each learning data.
- the learning data may be data in which each learning data is labeled with a category.
- Labeled training data is input to the neural network, and the error can be calculated by comparing the output (category) of the neural network and the label of the training data.
- the error can be calculated by comparing the input training data with the neural network output. The calculated error is backpropagated in the reverse direction (i.e., from the output layer to the input layer) in the neural network, and the connection weight of each node in each layer of the neural network can be updated according to backpropagation. The amount of change in the connection weight of each updated node may be determined according to the learning rate.
- the neural network's calculation of input data and backpropagation of errors can constitute a learning cycle (epoch).
- the learning rate may be applied differently depending on the number of repetitions of the learning cycle of the neural network. For example, in the early stages of neural network training, a high learning rate can be used to increase efficiency by allowing the neural network to quickly achieve a certain level of performance, and in the later stages of training, a low learning rate can be used to increase accuracy.
- the training data can generally be a subset of real data (i.e., the data to be processed using the learned neural network), and thus the error for the training data is reduced, but the error for the real data is reduced. There may be an incremental learning cycle.
- Overfitting is a phenomenon in which errors in actual data increase due to excessive learning on training data. For example, a phenomenon in which a neural network that learned a cat by showing a yellow cat fails to recognize that it is a cat when it sees a non-yellow cat may be a type of overfitting. Overfitting can cause errors in machine learning algorithms to increase. To prevent such overfitting, various optimization methods can be used. To prevent overfitting, methods such as increasing the learning data, regularization, or dropout, which omits some of the network nodes during the learning process, can be applied.
- the data structure may include a neural network.
- the data structure including the neural network may be stored in a computer-readable medium.
- Data structures including neural networks may also include data input to the neural network, weights of the neural network, hyperparameters of the neural network, data obtained from the neural network, activation functions associated with each node or layer of the neural network, and loss functions for learning the neural network.
- a data structure containing a neural network may include any of the components disclosed above.
- the data structure including the neural network includes all or all of the data input to the neural network, the weights of the neural network, the hyperparameters of the neural network, the data acquired from the neural network, the activation function associated with each node or layer of the neural network, and the loss function for training the neural network. It may be configured to include any combination of.
- a data structure containing a neural network may include any other information that determines the characteristics of the neural network.
- the data structure may include all types of data used or generated in the computational process of a neural network and is not limited to the above.
- Computer-readable media may include computer-readable recording media and/or computer-readable transmission media.
- a neural network can generally consist of a set of interconnected computational units, which can be referred to as nodes. These nodes may also be referred to as neurons.
- a neural network consists of at least one node.
- the data structure may include data input to the neural network.
- a data structure containing data input to a neural network may be stored in a computer-readable medium.
- Data input to the neural network may include learning data input during the neural network learning process and/or input data input to the neural network on which training has been completed.
- Data input to the neural network may include data that has undergone pre-processing and/or data subject to pre-processing.
- Preprocessing may include a data processing process to input data into a neural network. Therefore, the data structure may include data subject to preprocessing and data generated by preprocessing.
- the above-described data structure is only an example and the present invention is not limited thereto.
- the data structure may include the weights of the neural network. (In this specification, weights and parameters may be used with the same meaning.) And the data structure including the weights of the neural network may be stored in a computer-readable medium.
- a neural network may include multiple weights. Weights may be variable and may be varied by the user or algorithm in order for the neural network to perform the desired function. For example, when one or more input nodes are connected to one output node by respective links, the output node is set to the values input to the input nodes connected to the output node and the links corresponding to each input node. The output node value can be determined based on the parameters.
- the above-described data structure is only an example and the present invention is not limited thereto.
- the weights may include weights that are changed during the neural network learning process and/or weights for which neural network learning has been completed.
- Weights that change during the neural network learning process may include weights that change at the start of the learning cycle and/or weights that change during the learning cycle.
- the above-described data structure is only an example and the present invention is not limited thereto.
- the data structure including the weights of the neural network may be stored in a computer-readable storage medium (e.g., memory, hard disk) after going through a serialization process.
- Serialization can be the process of converting a data structure into a form that can be stored on the same or a different computing device and later reorganized and used.
- Computing devices can transmit and receive data over a network by serializing data structures.
- Data structures containing the weights of a serialized neural network can be reconstructed on the same computing device or on a different computing device through deserialization.
- the data structure including the weights of the neural network is not limited to serialization.
- the data structure including the weights of the neural network is a data structure to increase computational efficiency while minimizing the use of computing device resources (e.g., in non-linear data structures, B-Tree, Trie, m-way search tree, AVL tree, Red-Black Tree) may be included.
- computing device resources e.g., in non-linear data structures, B-Tree, Trie, m-way search tree, AVL tree, Red-Black Tree
- the data structure may include hyper-parameters of a neural network. And the data structure including the hyperparameters of the neural network can be stored in a computer-readable medium.
- a hyperparameter may be a variable that can be changed by the user. Hyperparameters include, for example, learning rate, cost function, number of learning cycle repetitions, weight initialization (e.g., setting the range of weight values subject to weight initialization), Hidden Unit. It may include a number (e.g., number of hidden layers, number of nodes in hidden layers).
- the above-described data structure is only an example and the present invention is not limited thereto.
- the steps of the method or algorithm described in connection with embodiments of the present invention may be implemented directly in hardware, implemented as a software module executed by hardware, or a combination thereof.
- the software module may be RAM (Random Access Memory), ROM (Read Only Memory), EPROM (Erasable Programmable ROM), EEPROM (Electrically Erasable Programmable ROM), Flash Memory, hard disk, removable disk, CD-ROM, or It may reside on any type of computer-readable recording medium well known in the art to which the present invention pertains.
- the components of the present invention may be implemented as a program (or application) and stored in a medium in order to be executed in conjunction with a hardware computer.
- Components of the invention may be implemented as software programming or software elements, and similarly, embodiments may include various algorithms implemented as combinations of data structures, processes, routines or other programming constructs, such as C, C++, , may be implemented in a programming or scripting language such as Java, assembler, etc.
- Functional aspects may be implemented as algorithms running on one or more processors.
- the various embodiments presented herein may be implemented as a method, apparatus, or article of manufacture using standard programming and/or engineering techniques.
- article of manufacture includes a computer program, carrier, or media accessible from any computer-readable device.
- computer-readable media include magnetic storage devices (e.g., hard disks, floppy disks, magnetic strips, etc.), optical disks (e.g., CDs, DVDs, etc.), smart cards, and flash memory. Includes, but is not limited to, devices (e.g., EEPROM, cards, sticks, key drives, etc.).
- various storage media presented herein include one or more devices and/or other machine-readable media for storing information.
- machine-readable media includes, but is not limited to, wireless channels and various other media capable of storing, retaining, and/or transmitting instruction(s) and/or data.
- the present invention can be used in fields related to 3D rendering images.
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Image Processing (AREA)
Abstract
전술한 바와 같은 과제를 실현하기 위한 본 발명의 다양한 실시예에 따른 다시점에 관련한 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법이 개시된다. 상기 방법은, 컴퓨팅 장치의 하나 이상의 프로세서에서 수행되는 방법에 있어서, 특정 객체를 중심으로 다양한 시점에서 촬영한 복수의 이미지를 획득하는 단계, 상기 복수의 이미지 각각에 대한 전처리를 통해 각 이미지에 대응하는 오브젝트 마스크 및 카메라 정보를 획득하는 단계, 상기 각 이미지에 대응하는 오브젝트 마스크에 기초하여 복수의 이미지 각각에 대응하는 복수의 배경 이미지를 획득하는 단계, 상기 복수의 배경 이미지 및 각 배경 이미지에 대응하는 카메라 정보에 기초하여 깊이 정보를 획득하는 단계 및 상기 복수의 배경 이미지, 상기 각 배경 이미지에 대응하는 상기 카메라 정보 및 상기 깊이 정보에 기초하여 큐브맵을 획득하는 단계를 포함할 수 있다.
Description
본 발명의 다양한 실시예는 3D 랜더링에 관련한 큐브맵을 생성하기 위한 방법에 관한 것으로, 보다 구체적으로, 다시점에 관련한 복수의 이미지에 기반하여 큐브맵을 생성하는 방법, 서버 및 컴퓨터 프로그램에 관한 것이다.
컴퓨터 그래픽스 분야에서 3D를 효율적으로 실제와 같이 랜더링(Rendering)하기 위하여 이미지 기반 Lighting 방법을 사용한다. 이미지 기반 Lighting 방법은, 랜더링된 물체(또는 오브젝트)에 대한 표면의 반사도를 근사화 하기 위해 주위 환경을 텍스처 형태의 텍스처 이미지로 저장하고, 이를 활용하여 효율적이고 빠르게 반사 특성을 계산하는 방법이다.
이 경우, 텍스처 이미지는, 일반적인 이미지가 아닌 큐브맵(Cube map 또는 Sphere map) 형태 또는 구 형태 공간을 2차원 이미지로 펼친것이며, 물체를 바라보고 있는 카메라의 광선(ray)이 들어올 때 반사되어 큐브맵에 도달한 픽셀 값을 맵핑하는 방식으로 활용된다.
한편, 큐브맵(Cube map 또는 sphere map)은 일반적인 이미지가, 아닌 360도 이미지 또는, 파노라마 이미지를 통해 생성되거나 이미지 스티칭 기법을 통해 생성될 수 있다.
다만, 360도 이미지 또는 파노라마 이미지는, fisheye 렌즈와 같은 특수한 렌즈 혹은 두개 이상의 렌즈가 탑재되어 있는 카메라 등 특수한 하드웨어를 사용하거나, 다시점 카메라를 통해 획득한 이미지들을 스티칭하여 획득하여야 하기 때문에, 특수한 하드웨어를 구비하지 않은 일반 사용자들의 접근이 제한될 수 있다.
이에 따라, 당 업계에는, 일반 카메라를 통해 촬영한 다시점 이미지로부터 Sphere 맵핑을 위한 큐브맵 이미지를 생성하는 알고리즘에 대한 연구 개발 수요가 존재할 수 있다.
[선행기술문헌]
[특허문헌]
공개특허공보 제10-2019-0051901(2019.05.16)
본 발명이 해결하고자 하는 과제는 전술한 배경기술에 대응하여 안출된 것으로, 일반 카메라를 통해 획득한 이미지들을 기반으로 큐브맵을 생성하는 방법을 제공하기 위함이다.
본 발명이 해결하고자 하는 과제들은 이상에서 언급된 과제로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상술한 과제를 해결하기 위한 본 발명의 일 실시예에 따른 다시점에 관련한 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법이 개시된다. 상기 방법은, 컴퓨팅 장치의 하나 이상의 프로세서에서 수행되는 방법에 있어서, 특정 객체를 중심으로 다양한 시점에서 촬영한 복수의 이미지를 획득하는 단계, 상기 복수의 이미지 각각에 대한 전처리를 통해 각 이미지에 대응하는 오브젝트 마스크 및 카메라 정보를 획득하는 단계, 상기 각 이미지에 대응하는 오브젝트 마스크에 기초하여 복수의 이미지 각각에 대응하는 복수의 배경 이미지를 획득하는 단계, 상기 복수의 배경 이미지 및 각 배경 이미지에 대응하는 카메라 정보에 기초하여 깊이 정보를 획득하는 단계 및 상기 복수의 배경 이미지, 상기 각 배경 이미지에 대응하는 상기 카메라 정보 및 상기 깊이 정보에 기초하여 큐브맵을 획득하는 단계를 포함할 수 있다.
대안적인 실시예에서, 상기 복수의 이미지는, 하나의 카메라를 활용하여 획득된 다시점 이미지들을 포함하며, 각 이미지는, 인접한 시점에 관련한 인접 이미지들과 적어도 일부가 중첩 영역을 형성하도록 촬영된 이미지인 것을 특징으로 할 수 있다.
대안적인 실시예에서, 상기 복수의 이미지 각각에 대한 전처리를 통해 각 이미지에 대응하는 오브젝트 마스크 및 카메라 정보를 획득하는 단계는, 상기 복수의 이미지 각각에서 특징점을 추출하는 단계, 상기 추출된 특징점을 인접 이미지와 매칭하는 단계, 상기 매칭된 점들을 기반으로 각 이미지에 대응하는 초기 카메라 정보를 획득하는 단계 및 상기 초기 카메라 정보에 대한 최적화 수행하여 각 이미지에 대응하는 상기 카메라 정보를 획득하는 단계를 포함할 수 있다.
대안적인 실시예에서, 상기 복수의 이미지 각각에 대한 전처리를 통해 각 이미지에 대응하는 오브젝트 마스크 및 카메라 정보를 획득하는 단계는, 딥러닝 기반 알고리즘을 통해 상기 각 이미지에서 상기 특정 객체에 관련한 오브젝트 마스크를 추출하는 단계를 포함할 수 있다.
대안적인 실시예에서, 상기 복수의 배경 이미지 및 각 이미지에 대응하는 카메라 정보에 기초하여 깊이 정보를 획득하는 단계는, MVS(Multi-View Stereo) 알고리즘을 활용하여 각 배경 이미지에 대응하는 깊이 정보를 추출하는 것을 특징으로 하며, 상기 깊이 정보는, 각 이미지에 포함된 객체들이 카메라로부터 떨어진 거리에 관련한 정보를 포함할 수 있다.
대안적인 실시예에서, 상기 큐브맵을 획득하는 단계는, 각 배경 이미지에 대응하는 카메라 정보 및 깊이 정보에 기초하여 상기 복수의 배경 이미지를 3차원 공간으로 투영시키는 단계 및 상기 3차원 공간 상에 투영된 복수의 배경 이미지에 기초하여 상기 큐브맵을 획득하는 단계를 포함할 수 있다.
대안적인 실시예에서, 상기 3차원 공간 상에 투영된 복수의 배경 이미지에 기초하여 큐브맵을 획득하는 단계는, 3차원 공간 상의 각 점에 대응하는 좌표를 구면 좌표계에 대응하는 구면 좌표로 변환하는 단계 및 상기 각 점의 구면 좌표 및 각 점에 대응하는 픽셀 값에 기초하여 큐브맵을 생성하는 단계를 포함할 수 있다.
대안적인 실시예에서, 상기 방법은, 상기 큐브맵에 대한 보정을 수행하는 단계를 더 포함하며, 상기 보정을 수행하는 단계는, 상기 큐브맵에서 결측 영역을 식별하는 단계 및 상기 결측 영역의 인접 픽셀 값에 기초하여 결측 픽셀 값을 산출하고, 상기 결측 픽셀 값을 통해 상기 결측 영역을 보충시키는 단계를 포함할 수 있다.
본 발명의 다른 실시예에 따르면, 다시점에 관련한 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법을 수행하는 서버가 개시된다. 상기 서버는 하나 이상의 인스트럭션을 저장하는 메모리 및 상기 메모리에 저장된 하나 이상의 인스트럭션을 실행하는 프로세서를 포함하고, 상기 프로세서는 상기 하나 이상의 인스트럭션을 실행함으로써, 전술한 다시점에 관련한 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법을 수행할 수 있다.
본 발명의 또 다른 실시예에 따르면, 컴퓨터에서 독출가능한 기록매체에 저장된 컴퓨터 프로그램이 개시된다. 상기 컴퓨터 프로그램은 하드웨어인 컴퓨터와 결합되어, 다시점에 관련한 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법을 수행할 수 있다.
본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 다양한 실시예에 따르면, 일반 카메라를 통해 획득한 이미지들을 기반으로 큐브맵을 생성하는 방법을 제공할 수 있다. 이에 따라, 특수한 하드웨어를 구비하기 위한 추가적인 비용 없이, 이미지 기반 Lighting을 적용해 실 환경을 보다 현실적으로 랜더링할 수 있으며, 나아가 반사 특성을 고려한 3D 변환 모듈을 더욱 고도화하는 효과를 제공할 수 있다.
본 발명의 효과들은 이상에서 언급된 효과로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시예와 관련된 다시점에 관련한 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법을 구현하기 위한 시스템을 개략적으로 도시한 예시도이다.
도 2는 본 발명의 일 실시예와 관련된 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법을 수행하는 서버의 하드웨어 구성도이다.
도 3은 본 발명의 일 실시예와 관련된 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법을 예시적으로 나타낸 순서도를 도시한다.
도 4a는 본 발명의 일 실시예와 관련된 복수의 이미지를 예시적으로 나타낸 예시도이다.
도 4b는 본 발명의 일 실시예와 관련된 각 이미지에 대응하는 오브젝트 마스크를 예시적으로 나타낸 예시도이다.
도 4c는 본 발명의 일 실시예와 관련된 복수의 이미지 각각에 대응하여 산출된 깊이 정보를 예시적으로 나타낸 예시도이다.
도 4d는 본 발명의 일 실시예와 관련된 배경 이미지 각각에 대응하여 산출된 깊이 정보를 예시적으로 나타낸 예시도이다.
도 5는 본 발명의 일 실시예와 관련된 큐브맵을 예시적으로 도시한 예시도이다.
도 6은 본 발명의 일 실시예와 관련된 복수의 이미지에 기반하여 큐브맵을 생성하는 전 과정을 예시적으로 나타낸 예시도이다.
도 7은 본 발명의 일 실시예와 관련된 멀티뷰 이미지 기반 관심 물체 인식 방법을 예시적으로 나타낸 순서도를 도시한다.
도 8은 본 발명의 일 실시예와 관련된 멀티뷰 이미지에 포함된 복수의 이미지를 예시적으로 나타낸 예시도이다.
도 9는 본 발명의 일 실시예와 관련된 멀티뷰 이미지로부터 참조 이미지들을 선별하는 과정을 설명하기 위한 예시도이다.
도 10은 본 발명의 일 실시예와 관련된 멀티뷰 이미지에 대응하여 추출된 관심 물체 영역에 대한 보정을 수행하는 과정을 설명하기 위한 예시도이다.
도 11은 본 발명의 일 실시예와 관련된 참조 이미지들에 기반하여 비용 볼륨을 생성하고, 이를 통해 최종 관심 물체 영역을 구성하는 과정을 설명하기 위한 예시도이다.
도 12는 본 발명의 일 실시예와 관련된 하나 이상의 네트워크 함수를 나타낸 개략도이다.
다양한 실시예들이 이제 도면을 참조하여 설명된다. 본 명세서에서, 다양한 설명들이 본 발명의 이해를 제공하기 위해서 제시된다. 그러나, 이러한 실시예들은 이러한 구체적인 설명 없이도 실행될 수 있음이 명백하다.
본 명세서에서 사용되는 용어 "컴포넌트", "모듈", "시스템" 등은 컴퓨터-관련 엔티티, 하드웨어, 펌웨어, 소프트웨어, 소프트웨어 및 하드웨어의 조합, 또는 소프트웨어의 실행을 지칭한다. 예를 들어, 컴포넌트는 프로세서상에서 실행되는 처리과정(procedure), 프로세서, 객체, 실행 스레드, 프로그램, 및/또는 컴퓨터일 수 있지만, 이들로 제한되는 것은 아니다. 예를 들어, 컴퓨팅 장치에서 실행되는 애플리케이션 및 컴퓨팅 장치 모두 컴포넌트일 수 있다. 하나 이상의 컴포넌트는 프로세서 및/또는 실행 스레드 내에 상주할 수 있다. 일 컴포넌트는 하나의 컴퓨터 내에 로컬화 될 수 있다. 일 컴포넌트는 2개 이상의 컴퓨터들 사이에 분배될 수 있다. 또한, 이러한 컴포넌트들은 그 내부에 저장된 다양한 데이터 구조들을 갖는 다양한 컴퓨터 판독가능한 매체로부터 실행할 수 있다. 컴포넌트들은 예를 들어 하나 이상의 데이터 패킷들을 갖는 신호(예를 들면, 로컬 시스템, 분산 시스템에서 다른 컴포넌트와 상호작용하는 하나의 컴포넌트로부터의 데이터 및/또는 신호를 통해 다른 시스템과 인터넷과 같은 네트워크를 통해 전송되는 데이터)에 따라 로컬 및/또는 원격 처리들을 통해 통신할 수 있다.
더불어, 용어 "또는"은 배타적 "또는"이 아니라 내포적 "또는"을 의미하는 것으로 의도된다. 즉, 달리 특정되지 않거나 문맥상 명확하지 않은 경우에, "X는 A 또는 B를 이용한다"는 자연적인 내포적 치환 중 하나를 의미하는 것으로 의도된다. 즉, X가 A를 이용하거나; X가 B를 이용하거나; 또는 X가 A 및 B 모두를 이용하는 경우, "X는 A 또는 B를 이용한다"가 이들 경우들 어느 것으로도 적용될 수 있다. 또한, 본 명세서에 사용된 "및/또는"이라는 용어는 열거된 관련 아이템들 중 하나 이상의 아이템의 가능한 모든 조합을 지칭하고 포함하는 것으로 이해되어야 한다.
또한, "포함한다" 및/또는 "포함하는"이라는 용어는, 해당 특징 및/또는 구성요소가 존재함을 의미하는 것으로 이해되어야 한다. 다만, "포함한다" 및/또는 "포함하는"이라는 용어는, 하나 이상의 다른 특징, 구성요소 및/또는 이들의 그룹의 존재 또는 추가를 배제하지 않는 것으로 이해되어야 한다. 또한, 달리 특정되지 않거나 단수 형태를 지시하는 것으로 문맥상 명확하지 않은 경우에, 본 명세서와 청구범위에서 단수는 일반적으로 "하나 또는 그 이상"을 의미하는 것으로 해석되어야 한다.
당업자들은 추가적으로 여기서 개시된 실시예들과 관련되어 설명된 다양한 예시적 논리적 블록들, 구성들, 모듈들, 회로들, 수단들, 로직들, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 양쪽 모두의 조합들로 구현될 수 있음을 인식해야 한다. 하드웨어 및 소프트웨어의 상호교환성을 명백하게 예시하기 위해, 다양한 예시 적 컴포넌트들, 블록들, 구성들, 수단들, 로직들, 모듈들, 회로들, 및 단계들은 그들의 기능성 측면에서 일반적으로 위에서 설명되었다. 그러한 기능성이 하드웨어로 또는 소프트웨어로서 구현되는지 여부는 전반적인 시스템에 부과된 특정 어플리케이션(application) 및 설계 제한들에 달려 있다. 숙련된 기술자들은 각각의 특정 어플리케이션들을 위해 다양한 방법들로 설명된 기능성을 구현할 수 있다. 다만, 그러한 구현의 결정들이 본 발명내용의 영역을 벗어나게 하는 것으로 해석되어서는 안된다.
제시된 실시예들에 대한 설명은 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 이용하거나 또는 실시할 수 있도록 제공된다. 이러한 실시예들에 대한 다양한 변형들은 본 발명의 기술 분야에서 통상의 지식을 가진 자에게 명백할 것이다. 여기에 정의된 일반적인 원리들은 본 발명의 범위를 벗어남이 없이 다른 실시예들에 적용될 수 있다. 그리하여, 본 발명은 여기에 제시된 실시예들로 한정되는 것이 아니다. 본 발명은 여기에 제시된 원리들 및 신규한 특징들과 일관되는 최광의의 범위에서 해석되어야 할 것이다.
본 명세서에서, 컴퓨터는 적어도 하나의 프로세서를 포함하는 모든 종류의 하드웨어 장치를 의미하는 것이고, 실시 예에 따라 해당 하드웨어 장치에서 동작하는 소프트웨어적 구성도 포괄하는 의미로서 이해될 수 있다. 예를 들어, 컴퓨터는 스마트폰, 태블릿 PC, 데스크톱, 노트북 및 각 장치에서 구동되는 사용자 클라이언트 및 애플리케이션을 모두 포함하는 의미로서 이해될 수 있으며, 또한 이에 제한되는 것은 아니다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세하게 설명한다.
본 명세서에서 설명되는 각 단계들은 컴퓨터에 의하여 수행되는 것으로 설명되나, 각 단계의 주체는 이에 제한되는 것은 아니며, 실시 예에 따라 각 단계들의 적어도 일부가 서로 다른 장치에서 수행될 수도 있다.
도 1은 본 발명의 일 실시예와 관련된 다시점에 관련한 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법을 구현하기 위한 시스템을 개략적으로 도시한 예시도이다.
도 1에 도시된 바와 같이, 본 발명의 실시예들에 따른 시스템은, 서버(100), 사용자 단말(200), 외부 서버(300) 및 네트워크(400)를 포함할 수 있다. 도 1에서 도시되는 컴포넌트들은 예시적인 것으로서, 추가적인 컴포넌트들이 존재하거나 또는 도 1에서 도시되는 컴포넌트들 중 일부는 생략될 수 있다. 본 발명의 실시예들에 따른 서버(100), 외부 서버(300) 및 사용자 단말(200)은 네트워크(400)를 통해, 본 발명의 일 실시예들에 따른 시스템을 위한 데이터를 상호 송수신할 수 있다.
본 발명의 실시예들에 따른 네트워크(400)는 공중전화 교환망(PSTN: Public Switched Telephone Network), xDSL(x Digital Subscriber Line), RADSL(Rate Adaptive DSL), MDSL(Multi Rate DSL), VDSL(Very High Speed DSL), UADSL(Universal Asymmetric DSL), HDSL(High Bit Rate DSL) 및 근거리 통신망(LAN) 등과 같은 다양한 유선 통신 시스템들을 사용할 수 있다.
또한, 여기서 제시되는 네트워크(400)는 CDMA(Code Division Multi Access), TDMA(Time Division Multi Access), FDMA(Frequency Division Multi Access), OFDMA(Orthogonal Frequency Division Multi Access), SC-FDMA(Single Carrier-FDMA) 및 다른 시스템들과 같은 다양한 무선 통신 시스템들을 사용할 수 있다.
본 발명의 실시예들에 따른 네트워크(400)는 유선 및 무선 등과 같은 그 통신 양태를 가리지 않고 구성될 수 있으며, 단거리 통신망(PAN: Personal Area Network), 근거리 통신망(WAN: Wide Area Network) 등 다양한 통신망으로 구성될 수 있다. 또한, 네트워크(400)는 공지의 월드와이드웹(WWW: World Wide Web)일 수 있으며, 적외선(IrDA: Infrared Data Association) 또는 블루투스(Bluetooth)와 같이 단거리 통신에 이용되는 무선 전송 기술을 이용할 수도 있다. 본 명세서에서 설명된 기술들은 위에서 언급된 네트워크들뿐만 아니라, 다른 네트워크들에서도 사용될 수 있다.
본 발명의 실시예에 따르면, 다시점에 관련한 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법을 제공하는 서버(100)(이하 '서버(100)')는 복수의 이미지에 기반하여 큐브맵을 생성할 수 있다.
구체적으로, 서버(100)는 다시점에 관련한 복수의 이미지를 획득하여 전처리를 수행할 수 있으며, 전처리된 복수의 이미지에 기반하여 큐브맵을 생성할 수 있다. 여기서, 다시점에 관련한 복수의 이미지는, 특정 객체를 중심으로 다양한 시점에서 촬영한 복수의 이미지를 의미할 수 있다. 특히, 다시점에 관련한 복수의 이미지 각각은, 적어도 일부가 중첩 영역을 형성하도록 촬영된 영상인 것을 특징으로 할 수 있다. 또한, 큐브맵은, 어떤 시점을 중심으로 둘러싼 환경들을 미리 랜더링하여 저장할 수 있는 텍스처를 의미할 수 있다. 예컨대, 큐브맵은, 객체의 주위의 장면을 객체가 입방체의 중심으로 있는 것과 같게 표현한 화면 데이터를 포함한 텍스처일 수 있다. 이러한 큐브맵은 3D를 효율적으로 실제와 같이 랜더링하는 과정에서 활용될 수 있다. 즉, 서버(100)는 특정 객체를 기준으로 다양한 시점에서 촬영하여 획득한 복수의 이미지들을 기반으로 3D 랜더링 과정에서 활용되는 큐브맵을 생성할 수 있다.
실시예에서, 복수의 이미지에 대한 전처리는, 각 이미지에 포함된 특정 객체에 관련한 오브젝트 마스크를 획득하기 위한 전처리 및 각 이미지에 대응하는 카메라 정보(예컨대, 카메라 포즈 및 카메라 파라미터 정보 등)를 획득하기 위한 전처리를 포함할 수 있다.
일 실시예에 따르면, 서버(100)는 딥러닝 기반 알고리즘을 활용하여 각 이미지에서 특정 객체에 관련한 오브젝트 마스크를 획득할 수 있다. 여기서 딥러닝 기반 알고리즘은, 이미지로부터 특정 객체에 관련한 오브젝트 마스크를 획득하기 위하여 학습된 신경망 모델(예컨대, CNN 모델)을 의미할 수 있다.
또한, 실시예에 따르면, 서버(100)는 SFM(Structure From Motion) 알고리즘을 통해, 각 아미지에 대응하는 카메라 정보를 산출할 수 있다. SFM 알고리즘은, 2차원에서 촬영한 이미지의 모션정보를 이용해 촬영된 이미지의 카메라 위치나 방향을 역추적한 후 이미지들과 카메라들의 관계를 구조화한 알고리즘일 수 있다. 이러한 SFM 알고리즘을 활용하는 경우, 각 이미지의 고유한 특징점(feature point)를 얻고, 각 촬영 장면마다 특징점들과 관계를 서로 매칭하고 계산하여 카메라의 위치 또는 카메라의 내, 외부 파라미터 정보를 획득할 수 있다.
전술한 바와 같이, 서버(100)는 복수의 이미지에 대한 전처리를 통해 각 이미지에 대응하는 오브젝트 마스크 및 카메라 정보를 획득할 수 있다.
또한, 서버(100)는 각 이미지에 대응하는 오브젝트 마스크에 기초하여 각 이미지에 대응하는 복수의 배경 이미지를 획득할 수 있으며, 획득한 복수의 배경 이미지를, 각 배경 이미지에 대응하는 카메라 정보에 기초하여 깊이 정보를 획득할 수 있다. 실시예에서, 각 배경 이미지에 대한 깊이 정보는, 딥러닝 기반 MVS(Multi View Stereo) 방법을 통해 획득되는 것을 특징으로 할 수 있다.
또한, 서버(100)는, 각 이미지에 대응하는 카메라 정보와 깊이 정보를 기반으로 각 이미지를 3차원 공간 상에 투영시키고, 3차원 공간 상에 투영된 배경 이미지들의 픽셀값을 기반으로 큐브맵을 획득할 수 있다.
즉, 본 발명은, 특수한 렌즈(예컨대, fisheye) 포함하거나, 두 개의 이상의 렌즈가 탑재되는 등 특수한 하드웨어에 관련한 카메라를 통해 획득된 이미지들 또는 미리 스티칭(stitching)된 이미지들을 기반으로 큐브맵을 생성하는 것이 아닌, 일반적인 카메라(예컨대, 단일 렌즈)를 활용하여 특정 객체를 중심으로 촬영한 다시점에 관련한 복수의 이미지를 기반으로 큐브맵을 생성하는 것을 특징으로 할 수 있다. 이는, 특수한 하드웨어를 구비된 카메라, 또는 스티칭된 이미지를 활용하는 것이 아니기 때문에, 별도의 하드웨어를 구비하거나 전문적인 지식이 없는 사용자로 하여금, 큐브맵 생성에 편의성을 향상시키는 효과를 제공할 수 있다. 본 발명의 다시점에 관련한 복수의 이미지들을 기반으로 큐브맵을 생성하는 방법에 대한 보다 구체적인 설명은, 도 3을 참조하여 후술하도록 한다.
실시예에서, 도 1에서의 1개의 서버(100)만을 도시하고 있으나, 이보다 많은 서버들 또한 본 발명의 범위에 포함될 수 있다는 점 그리고 서버(100)가 추가적인 컴포넌트들을 포함할 수 있다는 점은 당해 출원분야에 있어서 통상의 지식을 가진 자에게 명백할 것이다. 즉, 서버(100)는 복수 개의 컴퓨팅 장치로 구성될 수도 있다. 다시 말해, 복수의 노드의 집합이 서버(100)를 구성할 수 있다.
본 발명의 일 실시예에 따르면, 서버(100)는 클라우드 컴퓨팅 서비스를 제공하는 서버일 수 있다. 보다 구체적으로, 서버(100)는 인터넷 기반 컴퓨팅의 일종으로 정보를 사용자의 컴퓨터가 아닌 인터넷에 연결된 다른 컴퓨터로 처리하는 클라우드 컴퓨팅 서비스를 제공하는 서버일 수 있다. 상기 클라우드 컴퓨팅 서비스는 인터넷 상에 자료를 저장해 두고, 사용자가 필요한 자료나 프로그램을 자신의 컴퓨터에 설치하지 않고도 인터넷 접속을 통해 언제 어디서나 이용할 수 있는 서비스일 수 있으며, 인터넷 상에 저장된 자료들을 간단한 조작 및 클릭으로 쉽게 공유하고 전달할 수 있다. 또한, 클라우드 컴퓨팅 서비스는 인터넷 상의 서버에 단순히 자료를 저장하는 것뿐만 아니라, 별도로 프로그램을 설치하지 않아도 웹에서 제공하는 응용프로그램의 기능을 이용하여 원하는 작업을 수행할 수 있으며, 여러 사람이 동시에 문서를 공유하면서 작업을 진행할 수 있는 서비스일 수 있다. 또한, 클라우드 컴퓨팅 서비스는 IaaS(Infrastructure as a Service), PaaS(Platform as a Service), SaaS(Software as a Service), 가상 머신 기반 클라우드 서버 및 컨테이너 기반 클라우드 서버 중 적어도 하나의 형태로 구현될 수 있다. 즉, 본 발명의 서버(100)는 상술한 클라우드 컴퓨팅 서비스 중 적어도 하나의 형태로 구현될 수 있다. 전술한 클라우드 컴퓨팅 서비스의 구체적인 기재는 예시일 뿐, 본 발명의 클라우드 컴퓨팅 환경을 구축하는 임의의 플랫폼을 포함할 수도 있다.
본 발명의 실시예에 따른 사용자 단말(200)은 서버(100)와 통신을 위한 메커니즘을 갖는 시스템에서의 임의의 형태의 노드(들)를 의미할 수 있다. 사용자 단말(200)은 서버(100)와의 정보 교환을 통해 복수의 이미지에 대응하여 생성된 큐브맵을 제공받을 수 있는 단말로, 사용자가 소지한 단말을 의미할 수 있다. 또한, 실시예에서, 사용자 단말(200)은 다시점에 관련한 복수의 이미지를 획득할 수 있는 단말일 수 있다. 예컨대, 사용자 단말(200)은 이미지를 획득하기 위한 이미지 모듈(예컨대, 카메라)을 구비하고 있으며, 해당 이미지 모듈을 활용하여 특정 객체를 중심으로 한 다양한 시점에 관련한 복수의 이미지를 촬영하여 획득할 수 있다. 실시예에서, 사용자 단말(200)에 구비된 카메라 모듈은, 단일 렌즈를 통해 구비된 일반적인 카메라 모듈인 것을 특징으로 할 수 있다. 즉, 본 발명에서 활용되는 복수의 이미지는, 특수한 렌즈(예컨대, fisheye 렌즈)를 포함하는 카메라 모듈을 통해 획득된 360도 이미지(또는, 파노라마 이미지) 또는, 별도의 스티칭 작업이 수행된 이미지들이 아닌, 일반 카메라 모듈을 통해 획득되는 이미지들일 수 있다.
실시예에서, 사용자 단말(200)을 통해 획득한 복수의 이미지들은 서버(100)로 전송될 수 있으며, 서버(100)는 복수의 이미지들에 대응하는 큐브맵을 생성하여 사용자 단말(200)로 제공할 수 있다.
즉, 특수한 하드웨어를 사용하여 획득된 이미지(예컨대, 파노라마 이미지)나, 또는 다시점 카메라를 통해 획득한 이미지들에 대한 별도의 스티칭이 수행된 복수의 이미지들이 아닌, 일반적인 카메라 모듈을 통해 획득한 이미지들을 통해 보다 용이하게 큐브맵을 생성할 수 있다.
다양한 실시예에서, 사용자 단말(200)은 다시점에 관련한 복수의 이미지를 획득할 수 있는 단말일 수 있다. 예컨대, 사용자 단말(200)은 이미지를 획득하기 위한 이미지 모듈(예컨대, 카메라)을 구비하고 있으며, 해당 이미지 모듈을 활용하여 특정 객체를 중심으로 한 다양한 시점에 관련한 복수의 이미지를 촬영하여 획득할 수 있다.
실시예에 따르면, 서버(100)는 사용자 단말(200)로부터 멀티뷰 이미지를 수신하는 경우, 해당 멀티뷰 이미지로부터 관심 물체 영역을 인식하여 다양한 서비스를 제공할 수 있다. 예컨대, 서버(100)는 멀티뷰 이미지에서 관심 물체 영역을 인식하고 이를 기반으로 3차원으로 복원할 수 있다.
사용자 단말(200)은 서버(100)와 통신을 위한 메커니즘을 갖는 시스템에서의 임의의 형태의 엔티티(들)를 의미할 수 있다. 예를 들어, 이러한 사용자 단말(200)은 PC(personal computer), 노트북(note book), 모바일 단말기(mobile terminal), 스마트 폰(smart phone), 태블릿 PC(tablet pc) 및 웨어러블 디바이스(wearable device) 등을 포함할 수 있으며, 유/무선 네트워크에 접속할 수 있는 모든 종류의 단말을 포함할 수 있다. 또한, 사용자 단말(200)은 에이전트, API(Application Programming Interface) 및 플러그-인(Plug-in) 중 적어도 하나에 의해 구현되는 임의의 서버를 포함할 수도 있다. 또한, 사용자 단말(200)은 애플리케이션 소스 및/또는 클라이언트 애플리케이션을 포함할 수 있다.
일 실시예에서, 외부 서버(300)는 네트워크(400)를 통해 서버(100)와 연결될 수 있으며, 서버(100)가 다시점에 관련한 복수의 이미지를 통해 큐브맵을 생성하는 방법을 수행하기 위해 필요한 각종 정보/데이터를 제공하거나, 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법을 수행함에 따라 도출되는 결과 데이터를 제공받아 저장 및 관리할 수 있다. 예를 들어, 외부 서버(300)는 서버(100)의 외부에 별도로 구비되는 저장 서버일 수 있으나, 이에 한정되지 않는다.
또한, 실시예에서, 외부 서버(300)에 저장된 정보들은 본 발명의 인공신경망을 학습시키기 위한 학습 데이터, 검증 데이터 및 테스트 데이터로 활용될 수 있다. 즉, 외부 서버(300)는 본 발명의 인공지능 모델을 학습시키기 위한 데이터들을 저장하고 있을 수 있다. 본 발명의 서버(100)는 외부 서버(300)로부터 수신되는 정보들에 기초하여 복수의 학습 데이터 세트를 구축할 수 있다. 서버(100)는 복수의 학습 데이터 세트 각각을 통해 하나 이상의 네트워크 함수에 대한 학습을 수행함으로써, 복수의 인공지능 모델을 생성할 수 있다.
외부 서버(300)는 디지털 기기로서, 랩탑 컴퓨터, 노트북 컴퓨터, 데스크톱 컴퓨터, 웹 패드, 이동 전화기와 같이 프로세서를 탑재하고 메모리를 구비한 연산 능력을 갖춘 디지털 기기일 수 있다. 외부 서버(300)는 서비스를 처리하는 웹 서버일 수 있다. 전술한 서버의 종류는 예시일 뿐이며 본 개시는 이에 제한되지 않는다. 이하, 도 2를 참조하여, 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법을 수행하는 서버(100)의 하드웨어 구성에 대해 설명하도록 한다.
도 2는 본 발명의 일 실시예와 관련된 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법을 수행하는 서버의 하드웨어 구성도이다.
도 2를 참조하면, 본 발명의 일 실시예와 관련된 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법을 수행하는 서버(100)는 하나 이상의 프로세서(110), 프로세서(110)에 의하여 수행되는 컴퓨터 프로그램(151)을 로드(Load)하는 메모리(120), 버스(130), 통신 인터페이스(140) 및 컴퓨터 프로그램(151)을 저장하는 스토리지(150)를 포함할 수 있다. 여기서, 도 2에는 본 발명의 실시예와 관련 있는 구성요소들만 도시되어 있다. 따라서, 본 발명이 속한 기술분야의 통상의 기술자라면 도 2에 도시된 구성요소들 외에 다른 범용적인 구성 요소들이 더 포함될 수 있음을 알 수 있다.
본 발명의 일 실시예에 따르면, 프로세서(110)는 통상적으로 서버(100)의 전반적인 동작을 처리할 수 있다. 프로세서(110)는 위에서 살펴본 구성요소들을 통해 입력 또는 출력되는 신호, 데이터, 정보 등을 처리하거나 메모리(120)에 저장된 응용 프로그램을 구동함으로써, 사용자 또는 사용자 단말에게 적정한 정보 또는, 기능을 제공하거나 처리할 수 있다.
또한, 프로세서(110)는 본 발명의 실시예들에 따른 방법을 실행하기 위한 적어도 하나의 애플리케이션 또는 프로그램에 대한 연산을 수행할 수 있으며, 서버(100)는 하나 이상의 프로세서를 구비할 수 있다.
본 발명의 일 실시예에 따르면, 프로세서(110)는 하나 이상의 코어로 구성될 수 있으며, 컴퓨팅 장치의 중앙 처리 장치(CPU: central processing unit), 범용 그래픽 처리 장치(GPGPU: general purpose graphics processing unit), 텐서 처리 장치(TPU: tensor processing unit) 등의 데이터 분석, 딥러닝을 위한 프로세서를 포함할 수 있다.
프로세서(110)는 메모리(120)에 저장된 컴퓨터 프로그램을 판독하여 본 발명의 일 실시예에 따른 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법을 제공할 수 있다.
다양한 실시예에서, 프로세서(110)는 프로세서(110) 내부에서 처리되는 신호(또는, 데이터)를 일시적 및/또는 영구적으로 저장하는 램(RAM: Random Access Memory, 미도시) 및 롬(ROM: Read-Only Memory, 미도시)을 더 포함할 수 있다. 또한, 프로세서(110)는 그래픽 처리부, 램 및 롬 중 적어도 하나를 포함하는 시스템온칩(SoC: system on chip) 형태로 구현될 수 있다.
메모리(120)는 각종 데이터, 명령 및/또는 정보를 저장한다. 메모리(120)는 본 발명의 다양한 실시예에 따른 방법/동작을 실행하기 위하여 스토리지(150)로부터 컴퓨터 프로그램(151)을 로드할 수 있다. 메모리(120)에 컴퓨터 프로그램(151)이 로드되면, 프로세서(110)는 컴퓨터 프로그램(151)을 구성하는 하나 이상의 인스트럭션들을 실행함으로써 상기 방법/동작을 수행할 수 있다. 메모리(120)는 RAM과 같은 휘발성 메모리로 구현될 수 있을 것이나, 본 개시의 기술적 범위가 이에 한정되는 것은 아니다.
버스(130)는 서버(100)의 구성 요소 간 통신 기능을 제공한다. 버스(130)는 주소 버스(address Bus), 데이터 버스(Data Bus) 및 제어 버스(Control Bus) 등 다양한 형태의 버스로 구현될 수 있다.
통신 인터페이스(140)는 서버(100)의 유무선 인터넷 통신을 지원한다. 또한, 통신 인터페이스(140)는 인터넷 통신 외의 다양한 통신 방식을 지원할 수도 있다. 이를 위해, 통신 인터페이스(140)는 본 발명의 기술 분야에 잘 알려진 통신 모듈을 포함하여 구성될 수 있다. 몇몇 실시예에서, 통신 인터페이스(140)는 생략될 수도 있다.
스토리지(150)는 컴퓨터 프로그램(151)을 비 임시적으로 저장할 수 있다. 서버(100)를 통해 복수의 이미지를 통해 큐브맵을 생성하기 위한 프로세스를 수행하는 경우, 스토리지(150)는 복수의 이미지를 통해 큐브맵을 생성하기 위한 프로세스를 제공하기 위하여 필요한 각종 정보를 저장할 수 있다.
스토리지(150)는 ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리 등과 같은 비휘발성 메모리, 하드 디스크, 착탈형 디스크, 또는 본 발명이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터로 읽을 수 있는 기록 매체를 포함하여 구성될 수 있다.
컴퓨터 프로그램(151)은 메모리(120)에 로드될 때 프로세서(110)로 하여금 본 발명의 다양한 실시예에 따른 방법/동작을 수행하도록 하는 하나 이상의 인스트럭션들을 포함할 수 있다. 즉, 프로세서(110)는 상기 하나 이상의 인스트럭션들을 실행함으로써, 본 발명의 다양한 실시예에 따른 상기 방법/동작을 수행할 수 있다.
일 실시예에서, 컴퓨터 프로그램(151)은 특정 객체를 중심으로 다양한 시점에서 촬영한 복수의 이미지를 획득하는 단계, 복수의 이미지 각각에 대한 전처리를 통해 각 이미지에 대응하는 오브젝트 마스크 및 카메라 정보를 획득하는 단계, 각 이미지에 대응하는 오브젝트 마스크에 기초하여 복수의 이미지 각각에 대응하는 복수의 배경 이미지를 획득하는 단계, 복수의 배경 이미지 및 각 이미지에 대응하는 카메라 정보에 기초하여 깊이 정보를 획득하는 단계 및 복수의 배경 이미지, 각 배경 이미지에 대응하는 카메라 정보 및 깊이 정보에 기초하여 큐브맵을 획득하는 단계를 포함하는 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법을 수행하도록 하는 하나 이상의 인스트럭션을 포함할 수 있다.
다른 실시예에서, 컴퓨터 프로그램(151)은 다양한 시점에 관련한 복수의 이미지를 포함하는 멀티뷰 이미지를 획득하는 단계, 멀티뷰 이미지로부터 관심 물체 영역을 추출하는 단계, 추출된 관심 물체 영역에 대한 보정을 수행하는 단계, 멀티뷰 이미지로부터 참조 이미지를 선별하는 단계, 참조 이미지에 기초하여 비용 볼륨을 생성하는 단계 및 비용 볼륨에 기초하여 최종 관심 물체 영역을 구성하는 단계를 포함하는 멀티뷰 이미지 기반 관심 물체 인식 방법을 수행하도록 하는 하나 이상의 인스트럭션을 포함할 수 있다.
본 발명의 실시예와 관련하여 설명된 방법 또는 알고리즘의 단계들은 하드웨어로 직접 구현되거나, 하드웨어에 의해 실행되는 소프트웨어 모듈로 구현되거나, 또는 이들의 결합에 의해 구현될 수 있다. 소프트웨어 모듈은 RAM(Random Access Memory), ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리(Flash Memory), 하드 디스크, 착탈형 디스크, CD-ROM, 또는 본 발명이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터 판독가능 기록매체에 상주할 수도 있다.
본 발명의 구성 요소들은 하드웨어인 컴퓨터와 결합되어 실행되기 위해 프로그램(또는 애플리케이션)으로 구현되어 매체에 저장될 수 있다. 본 발명의 구성 요소들은 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있으며, 이와 유사하게, 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 이하, 도 3 내지 도 7을 참조하여, 서버(100)에 의해 수행되는 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법에 대하여 구체적으로 후술하도록 한다.
도 3은 본 발명의 일 실시예와 관련된 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법을 예시적으로 나타낸 순서도를 도시한다. 도 3에 도시된 단계들은 필요에 의해 순서가 변경될 수 있으며, 적어도 하나 이상의 단계가 생략 또는 추가될 수 있다. 즉, 이하의 단계들은 본 발명의 일 실시예에 불과할 뿐, 본 발명의 권리 범위는 이에 제한되지 않는다.
본 발명의 일 실시예에 따르면, 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법은, 특정 객체를 중심으로 다양한 시점에서 촬영한 복수의 이미지를 획득하는 단계(S110)를 포함할 수 있다. 실시예에서, 복수의 이미지의 획득은 메모리(120)에 저장된 데이터를 수신하거나 또는 로딩(loading)하는 것일 수 있다. 복수의 이미지의 획득은, 유/무선 통신 수단에 기초하여 다른 저장 매체에, 다른 컴퓨팅 장치, 동일한 컴퓨팅 장치 내의 별도 처리 모듈로부터 복수의 학습 데이터를 수신하거나 또는 로딩하는 것일 수 있다. 예컨대, 복수의 이미지는 사용자 단말로부터 수신될 수 있다.
복수의 이미지는, 단일 렌즈를 통해 구비되는 카메라를 활용하여 획득된 다시점 이미지들을 포함할 수 있다. 각 이미지는, 특정 객체를 포함할 수 있으며, 인접한 시점에 관련한 인접 이미지들과 적어도 일부가 중첩 영역을 형성하도록 촬영된 이미지인 것을 특징으로 할 수 있다. 즉, 본 발명에서 큐브맵 생성에 기반이 되는 복수의 이미지는, 특정 객체를 중심으로 촬영된 이미지일 수 있으며, 각 이미지가 서로 중첩 영역을 형성하는 것을 특징으로 할 수 있다. 이러한 복수의 이미지는, 사용자 단말을 통해 획득될 수 있다. 예컨대, 사용자 단말(200)은 카메라 모듈을 구비할 수 있으며, 카메라 모듈을 통해 복수의 이미지를 획득하여 서버(100)로 전송할 수 있다. 구체적인 예를 들어, 사용자는, 사용자 단말(200)을 통해 도 4a에 도시된 바와 같이, 특정 객체(예컨대, 화분)을 기준으로 하는 다양한 시점의 복수의 이미지를 획득할 수 있다. 사용자 단말(200)을 통해 획득되는 복수의 이미지는, 특정 객체(예컨대, 화분)를 중심으로 다양한 시점에서 촬영한 이미지들을 포함할 수 있다.
실시예에서, 서버(100)는 복수의 이미지 각각에서의 특정 객체의 존재 유무 및 복수의 이미지 간 중첩 영역의 존재 유무에 기초하여 큐브맵 생성에 관련한 적정성을 판별할 수 있다. 여기서 적정성 판별이란, 획득된 복수의 이미지가 큐브맵 생성에 적합한 이미지들인지 여부를 판별하는 것을 의미할 수 있다.
구체적으로, 복수의 이미지를 획득하는 단계는, 사용자 단말의 움직임에 따라 촬영되는 이미지들을 획득하는 단계, 각 이미지에서 특정 객체가 존재하는지 여부를 식별하는 단계 및 특정 객체가 존재하지 않는 이미지들을 제거하는 단계를 포함할 수 있다. 서버(100)는 사용자 단말(200)로부터 복수의 이미지를 획득하는 경우, 각 이미지에 특정 객체가 포함되어 있는지 여부를 판별할 수 있다. 본 발명은, 특정 객체를 기준으로 주변 배경 이미지들에 기반하여 큐브맵을 생성함에 따라, 중심이 되는 특정 객체가 각 이미지에 포함되어 있어야 한다. 예컨대, 특정 객체를 포함하지 않는 이미지가 활용되는 경우, 큐브맵 생성의 정확도를 저하시킬 수 있다. 이에 따라, 서버(100)는 특정 객체가 포함되어 있지 않는 이미지들을 큐브맵 생성에 적절하지 않은 이미지를 판별할 수 있다. 서버(100)는 큐브맵 생성에 적절하지 않은 것으로 판별된 이미지들을 제외시킬 수 있다. 즉, 서버(100)는 큐브맵 생성 과정에서 이미지들의 중심이 되는 특정 객체를 포함하는 이미지들 만을 선별하여 큐브맵 생성에 활용할 수 있다.
또한, 복수의 이미지를 획득하는 단계는, 사용자 단말의 움직임에 따라 촬영되는 이미지들을 획득하는 단계, 인접 이미지 간 중첩 영역이 존재하는지 여부를 식별하는 단계, 인접 이미지 간 중첩 영역이 존재하는 경우, 중첩 영역의 크기가 기 설정된 임계치 이상인지 여부를 판별하는 단계 및 중첩 영역의 크기가 임계치 미만인 경우, 추가 이미지를 획득하기 위한 디렉션을 사용자 단말에 전송하는 단계를 포함할 수 있다.
실시예에 따르면, 복수의 이미지들은, 큐브맵 생성에 활용되는 이미지이기 때문에, 적어도 일부가 중첩 영역을 갖도록 촬영되어야 할 수 있다. 예컨대, 인접 이미지 간 중첩 영역이 존재하지 않거나, 또는 중첩되는 영역이 현저히 적은 이미지들(즉, 중첩 영역의 크기가 기 설정된 임계치 미만인 이미지들)의 경우, 카메라 정보 산출이 어렵기 때문에 큐브맵 생성에 적절하지 않은 이미지들일 수 있다. 실시예에서, 기 설정된 임계치에 관련한 중첩 영역의 크기는, 인접 이미지 와 70% 이상 중첩되는 영역이 형성되는 것에 관련할 수 있다. 예컨대, 인접 이미지 간 오버랩되는 영역이 70% 이상인 경우, 중첩 영역의 크기가 기 설정된 임계치 이상인 것일 수 있다. 이에 따라, 서버(100)는 인접 이미지 간 중첩 영역의 크기가 기 설정된 임계치 미만인 이미지들이 식별된 경우, 추가 이미지를 획득하기 위한 디렉션을 생성하고, 이를 사용자 단말에 전송할 수 있다. 이 경우, 추가 이미지를 획득하기 위한 디렉션은, 특정 이미지를 기준으로 좌, 우, 상, 하 등 다양한 각도로 이동하여 이미지를 촬영하라는 정보를 포함할 수 있다. 예컨대, 제1이미지 및 제1이미지와 인접한 제2이미지 간 중첩 영역의 크기가 기 설정된 임계치 미만인 경우, 서버(100)는 제1이미지를 기준으로, 제1이미지와 일정 이상의 중첩 영역을 형성하도록 하는 각도로 이미지를 촬영할 수 있도록 하는 디렉션을 생성할 수 있다. 사용자는 사용자 단말(200)에 표시된 디렉션에 기반한 추가적인 촬영을 통해 추가 이미지들을 획득하고, 이를 서버(100)로 전송할 수 있다.
즉, 서버(100)는 인접 이미지 간의 중첩 영역에 기초하여 큐브맵 생성에 필요한 추가적인 이미지들(예컨대, 일정 이상의 중첩 영역을 갖는 이미지들)이 필요한지 여부를 판별하고, 추가적인 이미지가 필요한 것으로 판별된 경우, 추가적인 이미지를 획득하도록 하는 디렉션을 생성할 수 있다. 사용자는 자신의 단말에 표시된 디렉션에 따라 용이하게 추가 이미지를 촬영하여 서버(100)로 전송하게 되며, 서버(100)는 이러한 보충된 이미지들을 활용하여 큐브맵 생성할 수 있다.
본 발명의 일 실시예에 따르면, 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법은, 복수의 이미지 각각에 대한 전처리를 통해 각 이미지에 대응하는 오브젝트 마스크 및 카메라 정보를 획득하는 단계(S120)를 포함할 수 있다.
실시예에서, 복수의 이미지에 대한 전처리는, 각 이미지에 포함된 특정 객체에 관련한 오브젝트 마스크를 획득하기 위한 전처리 및 각 이미지에 대응하는 카메라 정보를 획득하기 위한 전처리를 포함할 수 있다.
구체적으로, 서버(100)는 딥러닝 기반 알고리즘을 활용하여 각 이미지에서 특정 객체에 관련한 오브젝트 마스크를 획득할 수 있다. 딥러닝 기반 알고리즘은, 이미지로부터 특정 객체에 관련한 오브젝트 마스크를 획득하기 위하여 학습된 신경망 모델(예컨대, CNN 모델)을 의미할 수 있다. 딥러닝 기반 알고리즘은, 예를 들어, 하나의 영역을 대표하는 특징을 기반으로 하여 유사한 화소들을 하나의 단위로 간주하고, 동일한 성질을 갖는 영역들을 분할하는 영역 기반 영역화 방법 및 이미지에서 경계선(edge)을 추출한 후 얻어진 경계선 정보를 이용하여 의미 있는 영역들을 추출하는 경계선 기반 영역화 방법 등을 통해 이미지 내에서 특정 객체에 관련한 오브젝트 마스크를 획득할 수 있다.
일 실시예에 따르면, 서버(100)는 SFM(Structure From motion) 알고리즘을 활용하여 각 이미지에 대응하는 카메라 정보를 획득할 수 있다.
SFM 알고리즘은, 2차원에서 촬영한 이미지의 모션정보를 이용해 촬영된 이미지의 카메라 위치나 방향을 역추적한 후 이미지들과 카메라들의 관계를 구조화한 알고리즘일 수 있다. 이러한 SFM 알고리즘을 활용하는 경우, 각 이미지의 고유한 특징점(feature point)를 얻고, 각 촬영 장면마다 특징점들과 관계를 서로 매칭하고 계산하여 카메라의 위치를 획득할 수 있다.
구체적으로, 복수의 이미지 각각에 대한 전처리를 통해 각 이미지에 대응하는 오브젝트 마스크 및 카메라 정보를 획득하는 단계는, 복수의 이미지 각각에서 특징점을 추출하는 단계, 추출된 특징점을 인접 이미지와 매칭하는 단계, 매칭된 점들을 기반으로 각 이미지에 대응하는 초기 카메라 정보를 획득하는 단계, 초기 카메라 정보에 대한 최적화를 수행하여 각 이미지에 대응하는 카메라 정보를 획득하는 단계를 포함할 수 있다.
좀 더 자세히 설명하면, 서버(100)는 각 이미지에서 특징점들을 추출하고, 추출된 특징점들을 인접 이미지와 매칭시킬 수 있다. 각 이미지의 특징점들이 인접 이미지의 특징점들과 매칭됨에 따라 모든 이미지에 대응하는 초기 카메라 정보가 계산될 수 있다. 여기서 초기 카메라 정보는, 카메라 포즈 및 카메라 파라미터(내부 파라미터 및 외부 파라미터)에 관한 정보를 포함할 수 있다. 또한, 서버(100)는 Bundle adjustment를 통해 초기 카메라 정보에 대한 최적화를 수행하여 카메라 정보를 획득할 수 있다. 이 경우, Bundle adjustment는, 특징점들을 기반으로 추정할 수 있는 3차원 포지션과 각 이미지들간 3차원 연계 모션을 동시에 최적화하는 알고리즘을 의미할 수 있다. 즉, 서버(100)는 각 이미지들의 특징점들을 연계하여 매칭하여 초기 카메라 정보를 계산하고 이를 최적화하는 과정을 통해 카메라 정보를 획득할 수 있다.
본 발명의 일 실시예에 따르면, 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법은, 각 이미지에 대응하는 오브젝트 마스크에 기초하여 복수의 이미지 각각에 대응하는 복수의 배경 이미지를 획득하는 단계(S130)를 포함할 수 있다.
실시예에 따르면, 본 발명은 특정 객체의 주위 환경을 통해 반사 특성을 근사화하여 계산하기 때문에, 특정 객체를 제외한 배경 이미지가 필요하다. 이를 위해서 이미지로부터 오브젝트 마스크를 계산하고, 오브젝트 마스크에 대응하는 마스크 이미지를 활용하여 배경 이미지를 추출할 수 있다. 구체적인 예를 들어, 도 4a 및 4b를 참조하면, 특정 객체에 관련한 오브젝트 마스크를 통해 마스크 이미지 추출될 수 있다. 이 경우, 마스크 이미지가 추출됨에 따라 각 시점 별 배경 이미지가 획득되게 된다.
본 발명의 일 실시예에 따르면, 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법은, 복수의 배경 이미지 및 각 이미지에 대응하는 카메라 정보에 기초하여 깊이 정보를 획득하는 단계(S140)를 포함할 수 있다.
실시예에 따르면, 2차원 이미지를 3차원으로 투영하기 위해서는 각 픽셀 별로 실세계의 오브젝트가 카메라 모듈로부터 얼마나 떨어져 있는지에 대한 정보가 요구될 수 있다. 이를 위해 서버(100)는 각 이미지 대응하는 카메라 정보에 기초하여 깊이 정보를 획득할 수 있다.
보다 구체적으로, 복수의 배경 이미지 및 각 이미지에 대응하는 카메라 정보에 기초하여 깊이 정보를 획득하는 단계는, MVS 알고리즘을 활용하여 각 배경 이미지에 대응하는 깊이 정보를 추출하는 것을 특징으로 할 수 있다. MVS 알고리즘은, 임의의 화각에서 획득한 여러 시점의 복수의 이미지를 기반으로 카메라 위치 정보를 활용하여 정교한 깊이 정보를 획득하는 알고리즘이다. 구체적인 실시예에서, 본 발명은, MVS 알고리즘 중 UniMVSNet 알고리즘을 활용하여 각 시점 별 이미지에 대응하는 깊이 정보를 예측할 수 있다.
즉, 서버(100)는 딥러닝 기반 MVS 알고리즘을 통해 각 시점 별 이미지에 대응하여 정확한 깊이 정보를 획득할 수 있다. 도 4c는 카메라와 객체들 간의 거리(즉, 깊이)를 색의 농도를 통해 예시적으로 표현한 것이다. 도 4c에 도시된 바와 같이, 각 시점 별 이미지에 대응하여 깊이 정보가 획득될 수 있다. 이러한 깊이 정보가 획득됨에 따라, 각 이미지의 픽셀 점들을 3차원 공간 상에 투영시킬 수 있게 된다.
일 실시예에 따르면, 본 발명은, 오브젝트 마스크를 통해 특정 객체가 제거된 상태의 배경 이미지들에 대응하여, 각 시점 별 배경 이미지에 대응하는 깊이 정보가 획득되는 것을 특징으로 할 수 있다. 본 발명에서 복수의 이미지는, 각 이미지 간의 연관 관계를 식별하기 위해 특정 객체를 기준으로 촬영되나, 생성되는 큐브맵에서는 특정 객체가 제외되어야 한다. 이에 따라, 서버(100)는 오브젝트 마스크를 통해 각 이미지에서 특정 객체를 제거하여 배경 이미지들을 획득하고, 획득된 배경 이미지들 각각에 대응하는 깊이 정보를 획득할 수 있다. 즉, 도 4d에 도시된 바와 같이, 각 시점 별 배경 이미지 각각에 대응하여 깊이 정보가 획득될 수 있다.
본 발명의 일 실시예에 따르면, 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법은, 복수의 배경 이미지, 각 배경 이미지에 대응하는 카메라 정보 및 깊이 정보에 기초하여 큐브맵을 획득하는 단계(S150)를 포함할 수 있다. 본 발명에서 큐브맵은, 어떤 시점을 중심으로 둘러싼 환경들을 미리 랜더링하여 저장할 수 있는 텍스처를 의미할 수 있다. 예컨대, 큐브맵은, 객체의 주위의 장면을 객체가 입방체의 중심으로 있는 것과 같게 표현한 화면 데이터를 포함한 텍스처일 수 있다. 이러한 큐브맵은 3D를 효율적으로 실제와 같이 랜더링하는 과정에서 활용될 수 있다.
실시예에서, 큐브맵을 획득하는 단계는, 각 배경 이미지에 대응하는 카메라 정보 및 깊이 정보에 기초하여 복수의 배경 이미지를 3차원 공간으로 투영시키는 단계를 포함할 수 있다. 구체적으로, 서버(100)는 각 배경 이미지 대응하는 카메라 정보와 깊이 정보를 통해 배경 이미지를 3차원 포인트 클라우드로 재투영할 수 있다. 3차원 공간 상에서의 점을 계산하는 방법은 하기의 수식과 같을 수 있다.
위 수식에서 d는 깊이 값을 나타내며, u, v는 픽셀 좌표, k는 카메라 내부 파라미터, 는 카메라 외부 파라미터(회전 R, 이동 t)를 나타낸다. 카메라 내부 파라미터의 역행렬을 깊이 값을 포함한 픽셀 좌표에 행렬 곱하여 이미지 좌표계를 카메라 좌표계로 변환 후, 카메라 외부 파라미터의 역행렬을 다시 행렬 곱하여 월드 좌표계로 변환할 수 있다. 즉, 상기와 수식을 활용하여 각 배경 이미지를 3차원 공간 상에 투영시킬 수 있다.
또한, 큐브맵을 획득하는 단계는, 3차원 공간 상에 투영된 복수의 배경 이미지에 기초하여 큐브맵을 획득하는 단계를 포함할 수 있다.
보다 구체적으로, 3차원 공간 상에 투영된 복수의 배경 이미지에 기초하여 큐브맵을 획득하는 단계는, 3차원 공간 상의 각 점에 대응하는 좌표를 구면 좌표계에 대응하는 구면 좌표로 변환하는 단계를 포함할 수 있다. 서버(100)는 3차원 공간으로 재투영된 점들을 구면(Spherical) 좌표계로 변환해 Sphere 공간의 점들로 다시 표현할 수 있다. 3차원 카테시안(Cartesian) 좌표를 구면 좌표로 변환하는 식은 하기와 같다.
또한, 3차원 공간 상에 투영된 복수의 배경 이미지에 기초하여 큐브맵을 획득하는 단계는, 각 점의 구면 좌표 및 각 점에 대응하는 픽셀 값에 기초하여 큐브맵을 생성하는 단계를 포함할 수 있다. 서버(100)는 3차원 공간 상에 재투영된 점들을 구면 좌표로 변환하게 된다. 이 경우, 서버(100)는 각 점들에 대응하는 구면 좌표와 각 픽셀 값을 기반하여 큐브맵 이미지로 맵핑할 수 있으며, 맵핑된 결과 이미지 즉, 큐브맵은, 도 5에 도시된 바와 같을 수 있다.
다양한 일 실시예에 따르면, 서버(100)는 생성된 큐브맵의 빈 공간에 대해 Inpainting을 수행할 수 있다. 예컨대, 최종 생성된 큐브맵에는 관측하지 못한 빈 공간이 포함되어 있을 수 있다. 이에 따라, 서버(100)는 큐브맵에 대한 보정을 수행할 수 있다.
구체적으로, 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법은, 큐브맵에 대한 보정을 수행하는 단계를 더 포함할 수 있다. 여기서, 보정을 수행하는 단계는, 큐브맵에서 결측 영역을 식별하는 단계를 포함할 수 있다. 예컨대, 결측 영역(또는 빈 공간)은 복수의 이미지를 통해 식별되지 않은 부분에 관련한 영역일 수 있다. 서버(100)는 큐브맵 상에서 관측되지 않은 빈 공간에 관련한 결측 영역을 식별할 수 있다.
또한, 보정을 수행하는 단계는, 결측 영역의 인접 픽셀 값에 기초하여 결측 픽셀 값을 산출하고, 결측 픽셀 값을 통해 결측 영역을 보충시키는 단계를 포함할 수 있다. 다시 말해, 서버(100)는 인접한 픽셀값들과 유사도록 결측 픽셀 값을 산출하고, 이를 통해 결측 영역을 보충하여 자연스러운 큐브맵을 생성할 수 있다.
즉, 서버(100)는 큐브맵 상에서 빈 공간(즉, 결측 영역)이 식별되는 경우, 빈 공간의 인접 픽셀들을 통해 interpolation하여 빈 공간에 대한 값을 계산하고 이에 기반하여 해당 영역을 보충할 수 있다. 이는 관측되지 않은 부분을 보충하여 자연스러운 큐브맵을 생성 및 제공할 수 있다는 장점이 있다.
도 6을 참조하여 본 발명의 전체 프로세스를 정리하면, 서버(100)는 획득된 복수의 이미지에 대한 전처리를 수행하여 각 이미지에 대응하는 오브젝트 마스크 및 카메라 정보를 획득할 수 있다. 또한, 서버(100)는 MVS 알고리즘을 활용하여 각 이미지에 대응하는 카메라 정보를 기반으로 각 이미지에 대응하는 깊이 정보를 획득할 수 있다.
보다 자세한 실시예에서, 서버(100)는 각 이미지에 대응하는 오브젝트 마스크를 추출하여 각 이미지에 대응하는 배경 이미지를 획득할 수 있으며, 각각의 배경 이미지의 카메라 정보를 기반으로 각 배경 이미지에 대응하는 깊이 정보를 획득하게 된다. 이에 따라, 각 이미지에서 특정 객체가 제거된 상태의 이미지들(예컨대, 배경 이미지들)과 그에 대응하는 깊이 정보가 획득될 수 있다.
서버(100)는 이러한 배경 이미지들과 각 배경 이미지에 대응하는 깊이 정보 및 카메라 정보를 통해 큐브맵을 생성할 수 있다. 구체적으로, 서버(100)는 각 배경 이미지의 깊이 정보와 카메라 정보를 통해 2차원 이미지를 3차원 공간으로 다시 투영할 수 있다. 또한, 서버(100)는 3차원 공간 점 좌표를 구면 좌표로 변환하여 구 공간의 점들로 다시 표현할 수 있다. 이에 따라, 서버(100)는 각 점들의 구면 좌표와 각 픽셀 값을 통해 큐브맵 이미지를 맵핑할 수 있다.
또한, 서버(100)는 생성된 큐브맵에서 관측하지 못한 빈공간에 대한 보정을 수행할 수 있다. 구체적으로, 서버(100)는 큐브맵에서 결측 영역을 식별하고, 해당 영역의 인접 픽셀들을 통해 interpolation하여 빈 공간에 대한 값을 계산하고 이에 기반하여 해당 영역을 보충할 수 있다. 즉, 서버(100)는 빈 공간에 대한 Inpainting을 통해 자연스러운 큐브맵을 생성 및 제공할 수 있다.
따라서, 본 발명은, 큐브맵 생성에 기반이되는 파노라마 이미지를 획득하기 위한 특수한 하드웨어 장비(예컨대, 특수한 렌즈)를 구비하거나, 또는 획득한 이미지들에 대한 별도의 스티칭 작업이 없이, 일반적인 카메라를 통해 획득한 이미지들을 기반으로 큐브맵을 생성하여 제공할 수 있다. 이는 사용자로 하여금, 실환경을 보다 현실적으로 랜더링할 수 있도록 하며, 나아가 반사 특성을 고려한 3D 변환 모듈을 더욱 고도화하는 효과를 제공할 수 있다.
한편, 다중 시점에 관련한 멀티뷰 이미지에서 특정 물체(또는 관심 물체)를 인식하기 위해서는, 각 시점에서와 비교해 물체의 위치 일관성이 유지되어야 한다. 다만, 기존의 영상 또는 이미지로부터 관심 물체를 인식하는 방식은, 다중 시점에 관련한 멀티뷰 이미지에 기반하는 것이 아니기 때문에, 같은 지점에 대한 예측 일관성을 유지시켜주지 못한다는 단점이 있다.
본 발명의 서버(100)는 다중 시점에 관련한 멀티뷰 이미지에 기초하여 관심 물체를 인식하는 것을 특징으로 할 수 있다. 구체적으로, 서버(100)는 다양한 시점에 관련한 복수의 이미지를 포함하는 멀티뷰 이미지로부터 관심 물체 영역을 추정할 수 있다. 여기서, 관심 물체 영역은, 이미지 내에 포함된 물체들 중 적어도 하나에 관한 것으로, 예컨대, 벽이나 바닥과는 별개로 분리될 수 있는 물체가 위치한 영역을 의미할 수 있다. 예를 들어, 관심 물체는, 이미지 내에 포함된 책상, 의자, 컵, 청소기 등일 수 있다. 전술한 관심 물체에 대한 구체적인 설명은 예시일 뿐, 본 발명은 이에 제한되지 않는다. 서버(100)는 물체 인식 모델을 활용하여 멀티뷰 이미지에서 관심 물체 영역을 식별할 수 있다. 물체 인식 모델은, 이미지에 기반하여 관심 물체를 인식하는 딥러닝 모델일 수 있다.
또한, 서버(100)는 멀티뷰 이미지에 대응하여 추정된 관심 물체 영역에 대한 보정을 수행할 수 있다. 추정된 관심 물체 영역이 보정되는 경우, 최종적으로 예측되는 관심 물체 영역의 인식 정확도가 향상될 수 있다.
실시예에 따르면, 물체 인식 모델의 출력 즉, 멀티뷰 이미지에 대한 관심 물체 영역은 대략적인 형태일 수 있다. 이에 따라, 서버(100)는 관심 물체 영역을 보다 세밀하게 나타내기 위해 딥러닝 네트워크를 활용한 보정을 수행할 수 있다. 서버(100)는 물체 인식 모델의 출력을 보정 네트워크 함수의 입력으로 처리하여 관심 물체 영역에 대응하는 보정된 관심 물체 영역을 출력할 수 있다. 예컨대, 보정을 위한 딥러닝 네트워크에서 활용되는 네트워크 구조는, 일반적으로, 대략적인 마스크를 입력으로 할 때, 합성곱 네트워크를 통과시키고, sigmoid를 적용해 정규화 과정을 거쳐 보다 세밀한 마스크를 출력하는 구조이다. 다만, sigmoid의 경우, 0~1사이의 값을 갖는 함수이기 때문에, 정밀한 보정이 어려울 수 있다. 예컨대, sigmoid를 적용하는 정규화 과정은, 기존에 정밀하지 못했던 마스크를 줄여줄 수 있으나, 제대로 관측되지 않은 영역을 생성(또는 재구성)할 수 없다. 이에 따라 본 발명은 물체 인식 모델의 출력층을 tanh을 통해 구성하여 보다 정밀한 보정을 수행할 수 있다. tanh의 경우, -1~1사이의 값을 갖기 때문에, 정밀하지 못했던 부분을 줄여줄 뿐만 아니라, 이전 네트워크에서 예측하지 못한 부분이 나타날 수 있게 수정해주는 보정이 가능하다는 장점이 있다.
또한, 서버(100)는 멀티뷰 이미지로부터 참조 이미지를 선별하여 비용 볼륨을 생성할 수 있다. 여기서, 참조 이미지는, 예측하고자 하는 프레임(또는 시점)에 대해 참고하고자 하는 시점들에 관한 이미지일 수 있다. 서버(100)는 멀티뷰 이미지에 포함된 복수의 이미지 각각에 대응하는 깊이 정보 및 카메라 정보를 획득할 수 있으며, 깊이 정보 및 카메라 정보에 기초하여 참조 이미지를 선별할 수 있다. 여기서 깊이 정보는, 각 이미지에 포함된 객체들이 카메라로부터 떨어진 거리에 관련한 정보를 포함할 수 있으며, 카메라 정보는, 카메라 포즈 정보 또는 카메라 파라미터에 관한 정보를 포함할 수 있다. 실시예에서, 카메라 파라미터 정보는, 카메라 내부 파라미터 정보 및 카메라 외부 파라미터 정보를 포함할 수 있다. 카메라 내부 파라미터 정보는, 초점거리, 주점, 비대칭 계수에 관련할 정보를 포함할 수 있다. 카메라 외부 파라미터 정보는, 카메라 좌표계와 월드 좌표계 사이의 변환 관계를 설명하기 위한 파라미터로, 두 좌표계 사이의 회전 및 평행이동 변환으로 표현될 수 있다. 서버(100)는 깊이 정보 및 카메라 정보를 기반으로 참조 이미지들을 왜곡(warping)하여 예측 시점으로 변환시킬 수 있다. 즉, 서버(100)는 예측하고자 하는 시점에 대하여 참고하고자 하는 참조 이미지들을 예측 시점으로 왜곡시켜 왜곡된 이미지들을 생성할 수 있다. 또한, 서버(100)는 왜곡된 이미지를 쌓아 비용 볼륨(cost volume)을 생성할 수 있다. 다시 말해, 서버(100)는 깊이 정보와 카메라 정보(예컨대, 카메라 외부 파라미터 정보)를 이용하여 주변 시점에 관련한 참조 이미지들을 왜곡하여 예측 시점으로 변환하고, 이를 쌓아 비용 볼륨을 생성할 수 있다. 비용 볼륨은, 동일한 시점으로 변환된 이미지들의 집합이므로, 이를 활용하는 경우, 최대한 일치하는 점들을 잘 포착할 수 있다.
또한, 서버(100)는 멀티뷰 이미지에 대응하여 생성된 비용 볼륨에 기초하여 최종 관심 물체 영역을 구성할 수 있다. 즉, 동일한 예측 시점을 기준으로 변환된(또는 왜곡된) 이미지들을 스택으로 쌓아 비용 볼륨을 생성하고, 생성된 비용 볼륨이 기반하여 관심 물체 영역을 구성함에 따라 다양한 시점 이미지에서도 일관성 있는 물체 인식이 가능해질 수 있다. 이는, 다중 시점에 관련한 멀티뷰 이미지에 대응하여 일관성이 유지된 예측 결과를 제공한다는 장점이 있다.
도 7은 본 발명의 일 실시예와 관련된 멀티뷰 이미지 기반 관심 물체 인식 방법을 예시적으로 나타낸 순서도를 도시한다. 도 7에 도시된 단계들은 필요에 의해 순서가 변경될 수 있으며, 적어도 하나 이상의 단계가 생략 또는 추가될 수 있다. 즉, 이하의 단계들은 본 발명의 일 실시예에 불과할 뿐, 본 발명의 권리 범위는 이에 제한되지 않는다.
본 발명의 일 실시예에 따르면, 멀티뷰 이미지 기반 관심 물체 인식 방법은, 다양한 시점에 관련한 복수의 이미지를 포함하는 멀티뷰 이미지를 획득하는 단계(S210)를 포함할 수 있다.
실시예에서, 멀티뷰 이미지의 획득은 메모리(120)에 저장된 데이터를 수신하거나 또는 로딩(loading)하는 것일 수 있다. 멀티뷰 이미지의 획득은, 유/무선 통신 수단에 기초하여 다른 저장 매체에, 다른 컴퓨팅 장치, 동일한 컴퓨팅 장치 내의 별도 처리 모듈로부터 복수의 학습 데이터를 수신하거나 또는 로딩하는 것일 수 있다. 예컨대, 멀티뷰 이미지는 사용자 단말로부터 수신될 수 있다.
본 발명의 멀티뷰 이미지는, 다양한 시점에 대응하여 획득된 복수의 이미지들을 포함할 수 있다. 예컨대, 특정 객체를 기준으로 다양한 각도로 촬영된 이미지들을 포함할 수 있다. 멀티뷰 이미지는, 카메라 모듈을 통해 획득된 다시점에 관련한 이미지들을 포함할 수 있다. 다양한 실시예에서, 멀티뷰 이미지에 포함된 복수의 이미지 각각은, 특정 객체를 포함할 수 있으며, 인접한 시점에 관련한 인접 이미지들과 적어도 일부가 중첩 영역을 형성하도록 촬영된 이미지인 것을 특징으로 할 수 있다. 복수의 이미지들은, 특정 객체를 중심으로 촬영된 이미지일 수 있으며, 각 이미지가 서로 중첩 영역을 형성하는 것을 특징으로 할 수 있다. 구체적인 예를 들어, 도 8에 도시된 바와 같이, 멀티뷰 이미지(500)는 특정 객체(예컨대, 화분)을 기준으로 하는 다양한 시점에서 획득된 복수의 이미지를 포함할 수 있다.
본 발명의 일 실시예에 따르면, 멀티뷰 이미지 기반 관심 물체 인식 방법은, 멀티뷰 이미지로부터 관심 물체 영역을 추출하는 단계(S220)를 포함할 수 있다.
구체적으로, 관심 물체 영역을 추출하는 단계는, 물체 인식 모델을 활용하여 복수의 이미지 각각에 대응하는 관심 물체 영역을 식별하는 단계를 포함할 수 있다.
실시예에서, 물체 인식 모델은, 단일 시점 이미지 기반 관심 물체를 인식하는 딥러닝 모델일 수 있다. 구체적인 실시예에서, 물체 인식 모델은 -Net일 수 있다. -Net은 기존 딥러닝 아키텍처에서 U 형태의 인코더-디코더 아키텍처를 겹쳐 만든 모델일 수 있다. 예컨대, -Net은 6개의 인코더, 5개의 디코더 sigmoid 함수, 컨볼루션 레이어를 포함할 수 있다. -Net은, 복수 개의 인코더와 복수 개의 디코더를 U 구조 형태로 순차적으로 연결하여 생성될 수 있다. U 형태의 아키텍처를 통해 네트워크가 더 깊어짐에 따라 고해상도의 이미지를 획득할 수 있다. 즉, U를 겹친 형태의 아키텍처는 물체 인식 모델로 하여금 전역적인 특징을 잘 학습하도록 할 수 있다.
서버(100)는 멀티뷰 이미지에 포함된 복수의 이미지 각각을 물체 인식 모델의 입력으로 처리하여 각 이미지에 대응하는 관심 물체 영역을 식별할 수 있다. 구체적인 예를 들어, 도 9에 도시된 바와 같이, 복수의 이미지 각각은, 물체 인식 모델의 입력으로 처리될 수 있으며, 이 경우, 물체 인식 모델은, 각 이미지에 대응하여 관심 물체 영역을 인식할 수 있다. 실시예에서, 관심 물체 영역은, 도 9 및 도 10에 도시된 바와 같이, 입력된 이미지와 동일한 크기의 이미지 공간 내에서 흰색으로 나타날 수 있다.
본 발명의 일 실시예에 따르면, 멀티뷰 이미지 기반 관심 물체 인식 방법은, 추출된 관심 물체 영역에 대한 보정을 수행하는 단계(S230)를 포함할 수 있다.
실시예에 따르면, 물체 인식 모델의 출력 즉, 멀티뷰 이미지에 대한 관심 물체 영역은 대략적인 형태일 수 있다. 이에 따라, 서버(100)는 관심 물체 영역을 보다 세밀하게 나타내기 위해 딥러닝 네트워크를 활용한 보정을 수행할 수 있다.
구체적으로, 보정을 수행하는 단계는, 물체 인식 모델의 출력을 보정 네트워크 함수의 입력으로 처리하여 관심 물체 영역에 대응하는 보정된 관심 물체 영역을 출력하는 단계를 포함할 수 있다. 도 9를 참조하면, 물체 인식 모델의 출력(예컨대, 각 이미지에 대응하여 추출된 관심 물체 영역)은 보정 네트워크 함수의 입력될 수 있다.
실시예에 따르면, 보정 네트워크 함수는, 이전 입력에 관련한 이미지에 대응하는 관심 물체 영역을 가이드로 하여 이미지에 대한 보정을 수행하는 것을 특징으로 할 수 있다. 보정 네트워크 함수는, 물체 인식 모델로 하여금 연속적인 비디오 흐름에 따라 프레임들을 더 잘 예측하도록 할 수 있다.
일반적으로, 대부분의 딥러닝 네트워크에서 사용하는 보정을 위한 네트워크 구조는, 대략적인 예측 마스크를 입력으로 할 때, 합성곱 네트워크를 통과시키고, sigmoid를 적용해 정규화 과정을 거치고 보다 세밀한 마스크를 출력하도록 한다. 이 경우, 정규화 과정은 기존에 정밀하지 못했던 마스크를 정밀하게 줄여주는 작업으로, 정밀한 보정이 어려울 수 있다. 구체적인 예를 들어, sigmoid의 경우, 0~1사이의 값을 갖는 함수이기 때문에, 기존에 정밀하지 못했던 마스크를 줄여줄 수 있으나, 제대로 관측되지 않은 영역을 생성(또는 재구성)할 수 없다.
이에 따라, 본 발명은 이전 입력에 관련한 프레임의 마스크를 가이드로 하는 보정 네트워크(즉, 보정 네트워크 함수)을 제공하는 것을 특징으로 할 수 있다.
본 발명의 보정 네트워크 함수를 tanh을 통해 구성하여 보다 정밀한 보정을 수행할 수 있다. tanh의 경우, -1~1사이의 값을 갖기 때문에, 정밀하지 못했던 부분을 줄여줄 뿐만 아니라, 이전 네트워크에서 예측하지 못한 부분이 나타날 수 있게 수정해주는 보정이 가능하다는 장점이 있다.
즉, 보정 네트워크 함수의 경우, 합성곱을 거친 후, sigmoid가 아닌 tanh를 이용해 -1~1로 만들어 잘못 나온 부분을 지울 뿐 아니라, 이전 네트워크에서 예측하지 못한 부분이 나타날 수 있게 수정해줄 수 있다.
보정 네트워크 함수를 학습시키기 위한 정답 레이블을 pytorch기반의 수도 코드(style pseudocode)로 나타내면 다음과 같을 수 있다.
Algorithm 1. Pytorch-style pseudocode to generate correction label
# image_label: 예측하고자 하는 이미지의 정답 레이블(0,1로 된 바이너리 마스크)
# prev_mask: 이전 프레임의 마스크(0,1로 된 바이너리 마스크)
# 정답과 이전 프레임의 마스크를 비교해 비디오 흐름에 따른 변화를 반영합니다. (카메라 이동에 따라 물체의 위치가 변하기 때문에 -1 또는 1로 변화량을 지정합니다) -> corr_area = torch.clamp((image_label*2)-prev_mask, -1, 1)
# 예측된 마스크와 정답을 비교했을 때, 이미 제대로 잘 예측한 경우 변화량이 0으로 고치지 않습니다. -> corr_area = torch.where((coarse_mask > 0) & (image_label > 0), torch.zeros_like(corr_area), corr_area)
# 잘못 예측해 물체가 아닌 곳을 맞다고 했을 때, 해당 부분의 변화량을 -1로 하여 지울 수 있도록 합니다. -> corr_area = torch.where((coarse_mask > 0) & (image_label == 0), torch.full_like(corr_area,-1), corr_area)
위 알고리즘에 따라 만들어진 레이블을 이용해 학습되는 보정 네트워크 함수의 출력과 손실 함수는 하기와 같다.
이러한 네트워크 구조는 도 10에 도시된 바와 같을 수 있다. 즉, 보정 네트워크 함수는, 이전 프레임의 마스크를 기반으로 보정을 수행할 수 있으므로, 보다 정교한 보정이 가능할 수 있다. 특히, 출력층을 tanh을 통해 구성함으로써 특정 부분을 지우는 보정 뿐 아니라, 관측되지 않은 부분을 채워 넣는 보정을 수행할 수 있다. 이는, 보다 관심 물체 영역을 보다 세밀하게 나타낼 수 있다는 장점이 있다.
다시 말해, 프레임 내에서 보다 세밀한 관심 물체 영역의 추정이 가능해질 수 있다. 이러한 보정 과정을 통해 이후 진행될 왜곡(warping) 수행 과정에서 야기되는 오류가 저감될 수 있다.
본 발명의 일 실시예에 따르면, 멀티뷰 이미지 기반 관심 물체 인식 방법은, 멀티뷰 이미지로부터 참조 이미지를 선별하는 단계(S240)를 포함할 수 있다. 참조 이미지는, 예측하고자 하는 프레임에 대해 참고하고자 하는 시점들에 관한 이미지일 수 있다.
실시예에서, 서버(100)는 멀티뷰 이미지에 대응하는 깊이 정보 및 카메라 정보가 존재하는지 여부에 기초하여 멀티뷰 이미지로부터 참조 이미지를 선별할 수 있다. 서버(100)는 멀티뷰 이미지에 대응하는 깊이 정보 및 카메라 정보가 존재하는 경우, 대응하는 깊이 정보 및 카메라 정보를 통해 참조 이미지들을 선별할 수 있다. 일 실시예에서, 멀티뷰 이미지에 대응하는 깊이 정보 및 카메라 정보가 존재하지 않는 경우, 서버(100)는 딥러닝 모델을 활용하여 멀티뷰 이미지에 대응하는 깊이 정보 및 카메라 정보를 획득할 수 있다. 서버(100)는 각 이미지를 딥러닝 모델의 입력으로 처리하여 각 이미지에 대응하는 깊이 정보 및 카메라 정보를 획득할 수 있다. 구체적인 실시예에서, 복수의 이미지 각각에 대응하는 깊이 정보 및 카메라 정보는, Structure From Motion(SfM) 라이브러리 중 하나인 COLMAP을 활용하여 획득될 수 있다.
실시예에 따르면, 멀티뷰 이미지로부터 참조 이미지를 선별하는 단계는, 멀티뷰 이미지에 대응하는 깊이 정보 및 카메라 정보를 획득하는 단계를 포함할 수 있다.
다양한 실시예에서, 카메라 정보를 획득하는 단계는, 복수의 이미지 각각에서 특징점을 추출하는 단계, 추출된 특징점을 인접 이미지와 매칭하는 단계, 매칭된 점들을 기반으로 각 이미지에 대응하는 초기 카메라 정보를 획득하는 단계 및 초기 카메라 정보에 대한 최적화를 수행하여 각 이미지에 대응하는 카메라 정보를 획득하는 단계를 포함할 수 있다.
좀 더 자세히 설명하면, 서버(100)는 각 이미지에서 특징점들을 추출하고, 추출된 특징점들을 인접 이미지와 매칭시킬 수 있다. 각 이미지의 특징점들이 인접 이미지의 특징점들과 매칭됨에 따라 모든 이미지에 대응하는 초기 카메라 정보가 계산될 수 있다. 여기서 초기 카메라 정보는, 카메라 포즈 및 카메라 파라미터(내부 파라미터 및 외부 파라미터)에 관한 정보를 포함할 수 있다. 또한, 서버(100)는 Bundle adjustment를 통해 초기 카메라 정보에 대한 최적화를 수행하여 카메라 정보를 획득할 수 있다. 이 경우, Bundle adjustment는, 특징점들을 기반으로 추정할 수 있는 3차원 포지션과 각 이미지들간 3차원 연계 모션을 동시에 최적화하는 알고리즘을 의미할 수 있다. 즉, 서버(100)는 각 이미지들의 특징점들을 연계하여 매칭하여 초기 카메라 정보를 계산하고 이를 최적화하는 과정을 통해 카메라 정보를 획득할 수 있다.
다양한 실시예에서, 깊이 정보를 획득하는 단계는, MVS(Multi-View Stereo) 알고리즘을 활용하여 각 이미지에 대응하는 깊이 정보를 추출하는 단계를 포함할 수 있다. 여기서 깊이 정보는, 각 이미지에 포함된 객체들이 카메라로부터 떨어진 거리에 관련한 정보를 포함할 수 있다. 서버(100)는 MVS 알고리즘을 활용하여 각 이미지에 대응하는 깊이 정보를 추출하는 것을 특징으로 할 수 있다. MVS 알고리즘은, 임의의 화각에서 획득한 여러 시점의 복수의 이미지를 기반으로 카메라 위치 정보를 활용하여 정교한 깊이 정보를 획득하는 알고리즘이다. 구체적인 실시예에서, 본 발명은, MVS 알고리즘 중 UniMVSNet 알고리즘을 활용하여 각 시점 별 이미지에 대응하는 깊이 정보를 예측할 수 있다. 즉, 서버(100)는 딥러닝 기반 MVS 알고리즘을 통해 각 시점 별 이미지에 대응하는 깊이 정보를 획득할 수 있다. 깊이 정보는, 도 11에 도시된 바와 같이, 카메라와 객체들 간의 거리(즉, 깊이)에 따른 색의 농도 차를 통해 예시적으로 표현될 수 있다. 이러한 깊이 정보를 통해, 각 객체와 카메라 간의 거리를 예측할 수 있게 된다.
또한, 멀티뷰 이미지로부터 참조 이미지를 선별하는 단계는, 깊이 정보 및 카메라 정보에 기초하여 참조 이미지를 선별하는 단계를 포함할 수 있다. 실시예에서, 카메라 파라미터 정보는, 카메라 내부 파라미터 정보 및 카메라 외부 파라미터 정보를 포함할 수 있다. 카메라 내부 파라미터 정보는, 초점거리, 주점, 비대칭 계수에 관련할 정보를 포함할 수 있다. 카메라 외부 파라미터 정보는, 카메라 좌표계와 월드 좌표계 사이의 변환 관계를 설명하기 위한 파라미터로, 두 좌표계 사이의 회전 및 평행이동 변환으로 표현될 수 있다.
서버(100)는 카메라 외부 파라미터 중 회전 및 이동 행렬을 추출하고, 각 시점의 각 행렬끼리의 거리 L1를 산출할 수 있다. 실시예에서, 서버(100)는 거리 L1에 기초하여 참조 이미지를 선별할 수 있다. 예컨대, 거리 L1이 최소가 되는 이미지들을 참조 이미지로 선별할 수 있다. 이 경우, 물체의 크기에 따라 단순 거리만으로는 정반대편의 시점이 선택될 수 있기 때문에, 두 시점이 같은 방향을 보는 것이 중요할 수 있다. 이에 따라, 서버(100)는 회전 행렬의 영향력이 커지도록 회전 행렬에 가중치를 부여하는 것을 특징으로 할 수 있다. 구체적인 실시예에서, 서버(100)는 회전 행렬과 이동 행렬의 가중치를 각각 0.7 및 0.3으로 설정할 수 있다. 전술한 각 행렬의 가중치에 관련한 구체적인 수치적 기재는 예시일 뿐, 본 발명은 이에 제한되지 않는다.
본 발명의 일 실시예에 따르면, 멀티뷰 이미지 기반 관심 물체 인식 방법은, 참조 이미지에 기초하여 비용 볼륨을 생성하는 단계(S250)를 포함할 수 있다. 비용 볼륨은, 동일한 시점으로 변환된 이미지들의 집합이므로, 이를 활용하는 경우, 최대한 일치하는 점들을 잘 포착할 수 있다.
구체적으로, 비용 볼륨을 생성하는 단계는, 깊이 정보 및 카메라 정보를 기반으로 참조 이미지들을 왜곡하여 예측 시점으로 변환하는 단계 및 예측 시점으로 변환된 이미지들을 쌓아 비용 볼륨을 생성하는 단계를 포함할 수 있다.
도 11을 참조하여 보다 자세히 설명하면, 서버(100)는 깊이 정보 및 카메라 정보를 기반으로 참조 이미지들을 왜곡(warping)하여 예측 시점으로 변환시킬 수 있다. 서버(100)는 각 이미지의 깊이 정보와 카메라 외부 파라미터를 이용하여 주변 시점에서 예측 시점으로의 변환 행렬(homography)을 산출할 수 있다. 이러한 변환 행렬은 다음과 같이 계산될 수 있다.
상기의 수식을 이용해 산출한 변환 행렬을 적용하여 주변 시점을 왜곡하여 예측 시점으로 변환할 수 있다. 이 경우, 왜곡 시점에서 보는 주변 시점의 이미지가 생성될 수 있다.
다양한 실시예에서, 서버(100)는 깊이 정보 중 신뢰도가 높은 정보만을 선별할 수 있다. 예컨대, 깊이 정보들 중 일정 이상의 신뢰도를 가진 정보들만을 활용하여 참조 이미지에 대한 왜곡을 수행하여 예측 시점으로 변환시킬 수 있다. 이 경우, 신뢰도가 높은 정보만을 선별하기 때문에, 정확한 왜곡점들만을 활용함에 따라, 오차가 최소화되는 효과를 제공할 수 있다.
즉, 서버(100)는 예측하고자 하는 시점에 대하여 참고하고자 하는 참조 이미지들을 예측 시점으로 왜곡시켜 왜곡된 이미지들을 생성할 수 있다. 또한, 서버(100)는 왜곡된 이미지를 쌓아 비용 볼륨을 생성할 수 있다. 다시 말해, 서버(100)는 깊이 정보와 카메라 정보(예컨대, 카메라 외부 파라미터 정보)를 이용하여 주변 시점에 관련한 참조 이미지들을 왜곡하여 예측 시점으로 변환하고, 이를 쌓아 비용 볼륨을 생성할 수 있다. 비용 볼륨은, 동일한 시점으로 변환된 이미지들의 집합이므로, 이를 활용하는 경우, 최대한 일치하는 점들을 잘 포착할 수 있다.
다양한 실시예에서, 서버(100)는 생성된 비용 볼륨을 기반으로 하나의 채널을 가진 이미지를 생성할 수 있다. 도 11을 참조하면, 서버(100)는 비용 볼륨을 각 이미지 간 거리에 따라 가중합하여 하나의 채널을 가진 이미지를 생성할 수 있다.
본 발명의 일 실시예에 따르면, 멀티뷰 이미지 기반 관심 물체 인식 방법은, 비용 볼륨에 기초하여 최종 관심 물체 영역을 구성하는 단계(S260)를 포함할 수 있다.
최종 관심 물체 영역을 구성하는 단계는, 잡음 제거 알고리즘을 통해 상기 예측 시점의 이미지에서의 윤곽을 보정하여 상기 최종 관심 물체 영역을 구성하는 단계를 포함할 수 있다. 보다 구체적인 실시예에서, Open CV 패키지에서 제공되는 joint Bilateral Filter를 통해 예측 시점의 RGB 이미지에서의 가장 자리를 살려 최종 관심 물체 영역을 구성할 수 있다. joint Bilateral Filter는 깊이 영상의 잡음을 제거하기 위한 알고리즘일 수 있다. 실시예에서, joint Bilateral Filter는 기준 화소와 그 주변 화소의 색상 영상의 밝기 차이값과 화소 간 거리 값에 각각 가우시안 함수를 적용하여 joint histogram을 생성하고, 그 평균값을 기준 화소의 깊이값으로 채움으로써, 깊이 영상에서 잡음을 제거할 수 있다. 즉 도 11에 도시된 바와 같이, 하나의 채널을 가진 비용 볼륨에 관한 이미지가 joint Bilateral Filter의 입력으로 처리됨에 따라, 비용 볼륨에 대응하는 이미지에서의 잡음이 제거될 수 있으며, 이는 관심 물체 영역 인식 정확도 향상에 기여할 수 있다.
즉, 동일한 예측 시점을 기준으로 변환된(또는 왜곡된) 이미지들을 스택으로 쌓아 비용 볼륨을 생성하고, 생성된 비용 볼륨이 기반하여 관심 물체 영역을 구성함에 따라 다양한 시점 이미지에서도 일관성 있는 물체 인식이 가능해질 수 있다. 이는, 다중 시점에 관련한 멀티뷰 이미지에 대응하여 일관성이 유지된 예측 결과를 제공한다는 장점이 있다. 다시 말해, 다중 시점에 관련한 이미지들을 포함하는 멀티뷰 이미지에 대응하여 일관성이 유지된 예측 결과를 얻을 수 있다는 장점이 있다.
도 12는 본 발명의 일 실시예와 관련된 하나 이상의 네트워크 함수를 나타낸 개략도이다.
본 명세서에 걸쳐, 연산 모델, 신경망, 네트워크 함수, 뉴럴 네트워크(neural network)는 동일한 의미로 사용될 수 있다. 신경망은 일반적으로 “노드”라 지칭될 수 있는 상호 연결된 계산 단위들의 집합으로 구성될 수 있다. 이러한 “노드”들은 “뉴런(neuron)”들로 지칭될 수도 있다. 신경망은 적어도 하나 이상의 노드들을 포함하여 구성된다. 신경망들을 구성하는 노드(또는 뉴런)들은 하나 이상의“링크”에 의해 상호 연결될 수 있다.
딥 뉴럴 네트워크(DNN: deep neural network, 심층신경망)는 입력 레이어와 출력 레이어 외에 복수의 히든 레이어를 포함하는 신경망을 의미할 수 있다. 딥 뉴럴 네트워크를 이용하면 데이터의 잠재적인 구조(latent structures)를 파악할 수 있다. 즉, 사진, 글, 비디오, 음성, 음악의 잠재적인 구조(예를 들어, 어떤 물체가 사진에 있는지, 글의 내용과 감정이 무엇인지, 음성의 내용과 감정이 무엇인지 등)를 파악할 수 있다. 딥 뉴럴 네트워크는 컨볼루션 뉴럴 네트워크(CNN: convolutional neural network), 리커런트 뉴럴 네트워크(RNN: recurrent neural network), 오토 인코더(auto encoder), GAN(Generative Adversarial Networks), 제한 볼츠만 머신(RBM: restricted boltzmann machine), 심층 신뢰 네트워크(DBN: deep belief network), Q 네트워크, U 네트워크, 샴 네트워크 등을 포함할 수 있다. 전술한 딥 뉴럴 네트워크의 기재는 예시일 뿐이며 본 발명은 이에 제한되지 않는다.
뉴럴 네트워크는 교사 학습(supervised learning), 비교사 학습(unsupervised learning) 및 반교사학습(semi supervised learning) 중 적어도 하나의 방식으로 학습될 수 있다. 뉴럴 네트워크의 학습은 출력의 오류를 최소화하기 위한 것이다. 뉴럴 네트워크의 학습에서 반복적으로 학습 데이터를 뉴럴 네트워크에 입력시키고 학습 데이터에 대한 뉴럴 네트워크의 출력과 타겟의 에러를 계산하고, 에러를 줄이기 위한 방향으로 뉴럴 네트워크의 에러를 뉴럴 네트워크의 출력 레이어에서부터 입력 레이어 방향으로 역전파(backpropagation)하여 뉴럴 네트워크의 각 노드의 가중치를 업데이트 하는 과정이다. 교사 학습의 경우 각각의 학습 데이터에 정답이 라벨링 되어있는 학습 데이터를 사용하며(즉, 라벨링된 학습 데이터), 비교사 학습의 경우는 각각의 학습 데이터에 정답이 라벨링되어 있지 않을 수 있다. 즉, 예를 들어 데이터 분류에 관한 교사 학습의 경우의 학습 데이터는 학습 데이터 각각에 카테고리가 라벨링 된 데이터 일 수 있다. 라벨링된 학습 데이터가 뉴럴 네트워크에 입력되고, 뉴럴 네트워크의 출력(카테고리)과 학습 데이터의 라벨이 비교함으로써 오류(error)가 계산될 수 있다. 다른 예로, 데이터 분류에 관한 비교사 학습의 경우 입력인 학습 데이터가 뉴럴 네트워크 출력과 비교됨으로써 오류가 계산될 수 있다. 계산된 오류는 뉴럴 네트워크에서 역방향(즉, 출력 레이어에서 입력 레이어 방향)으로 역전파 되며, 역전파에 따라 뉴럴 네트워크의 각 레이어의 각 노드들의 연결 가중치가 업데이트 될 수 있다. 업데이트 되는 각 노드의 연결 가중치는 학습률(learning rate)에 따라 변화량이 결정될 수 있다. 입력 데이터에 대한 뉴럴 네트워크의 계산과 에러의 역전파는 학습 사이클(epoch)을 구성할 수 있다. 학습률은 뉴럴 네트워크의 학습 사이클의 반복 횟수에 따라 상이하게 적용될 수 있다. 예를 들어, 뉴럴 네트워크의 학습 초기에는 높은 학습률을 사용하여 뉴럴 네트워크가 빠르게 일정 수준의 성능을 확보하도록 하여 효율성을 높이고, 학습 후기에는 낮은 학습률을 사용하여 정확도를 높일 수 있다.
뉴럴 네트워크의 학습에서 일반적으로 학습 데이터는 실제 데이터(즉, 학습된 뉴럴 네트워크를 이용하여 처리하고자 하는 데이터)의 부분집합일 수 있으며, 따라서, 학습 데이터에 대한 오류는 감소하나 실제 데이터에 대해서는 오류가 증가하는 학습 사이클이 존재할 수 있다. 과적합(overfitting)은 이와 같이 학습 데이터에 과하게 학습하여 실제 데이터에 대한 오류가 증가하는 현상이다. 예를 들어, 노란색 고양이를 보여 고양이를 학습한 뉴럴 네트워크가 노란색 이외의 고양이를 보고는 고양이임을 인식하지 못하는 현상이 과적합의 일종일 수 있다. 과적합은 머신러닝 알고리즘의 오류를 증가시키는 원인으로 작용할 수 있다. 이러한 과적합을 막기 위하여 다양한 최적화 방법이 사용될 수 있다. 과적합을 막기 위해서는 학습 데이터를 증가시키거나, 레귤라이제이션(regularization), 학습의 과정에서 네트워크의 노드 일부를 생략하는 드롭아웃(dropout) 등의 방법이 적용될 수 있다.
본 명세서에 걸쳐, 연산 모델, 신경망, 네트워크 함수, 뉴럴 네트워크(neural network)는 동일한 의미로 사용될 수 있다. (이하에서는 신경망으로 통일하여 기술한다.) 데이터 구조는 신경망을 포함할 수 있다. 그리고 신경망을 포함한 데이터 구조는 컴퓨터 판독가능 매체에 저장될 수 있다. 신경망을 포함한 데이터 구조는 또한 신경망에 입력되는 데이터, 신경망의 가중치, 신경망의 하이퍼 파라미터, 신경망으로부터 획득한 데이터, 신경망의 각 노드 또는 레이어와 연관된 활성 함수, 신경망의 학습을 위한 손실 함수를 포함할 수 있다. 신경망을 포함한 데이터 구조는 상기 개시된 구성들 중 임의의 구성 요소들을 포함할 수 있다. 즉 신경망을 포함한 데이터 구조는 신경망에 입력되는 데이터, 신경망의 가중치, 신경망의 하이퍼 파라미터, 신경망으로부터 획득한 데이터, 신경망의 각 노드 또는 레이어와 연관된 활성 함수, 신경망의 트레이닝을 위한 손실 함수 등 전부 또는 이들의 임의의 조합을 포함하여 구성될 수 있다. 전술한 구성들 이외에도, 신경망을 포함한 데이터 구조는 신경망의 특성을 결정하는 임의의 다른 정보를 포함할 수 있다. 또한, 데이터 구조는 신경망의 연산 과정에 사용되거나 발생되는 모든 형태의 데이터를 포함할 수 있으며 전술한 사항에 제한되는 것은 아니다. 컴퓨터 판독가능 매체는 컴퓨터 판독가능 기록 매체 및/또는 컴퓨터 판독가능 전송 매체를 포함할 수 있다. 신경망은 일반적으로 노드라 지칭될 수 있는 상호 연결된 계산 단위들의 집합으로 구성될 수 있다. 이러한 노드들은 뉴런(neuron)들로 지칭될 수도 있다. 신경망은 적어도 하나 이상의 노드들을 포함하여 구성된다.
데이터 구조는 신경망에 입력되는 데이터를 포함할 수 있다. 신경망에 입력되는 데이터를 포함하는 데이터 구조는 컴퓨터 판독가능 매체에 저장될 수 있다. 신경망에 입력되는 데이터는 신경망 학습 과정에서 입력되는 학습 데이터 및/또는 학습이 완료된 신경망에 입력되는 입력 데이터를 포함할 수 있다. 신경망에 입력되는 데이터는 전처리(pre-processing)를 거친 데이터 및/또는 전처리 대상이 되는 데이터를 포함할 수 있다. 전처리는 데이터를 신경망에 입력시키기 위한 데이터 처리 과정을 포함할 수 있다. 따라서 데이터 구조는 전처리 대상이 되는 데이터 및 전처리로 발생되는 데이터를 포함할 수 있다. 전술한 데이터 구조는 예시일 뿐 본 발명은 이에 제한되지 않는다.
데이터 구조는 신경망의 가중치를 포함할 수 있다. (본 명세서에서 가중치, 파라미터는 동일한 의미로 사용될 수 있다.) 그리고 신경망의 가중치를 포함한 데이터 구조는 컴퓨터 판독가능 매체에 저장될 수 있다. 신경망은 복수개의 가중치를 포함할 수 있다. 가중치는 가변적일 수 있으며, 신경망이 원하는 기능을 수행하기 위해, 사용자 또는 알고리즘에 의해 가변 될 수 있다. 예를 들어, 하나의 출력 노드에 하나 이상의 입력 노드가 각각의 링크에 의해 상호 연결된 경우, 출력 노드는 상기 출력 노드와 연결된 입력 노드들에 입력된 값들 및 각각의 입력 노드들에 대응하는 링크에 설정된 파라미터에 기초하여 출력 노드 값을 결정할 수 있다. 전술한 데이터 구조는 예시일 뿐 본 발명은 이에 제한되지 않는다.
제한이 아닌 예로서, 가중치는 신경망 학습 과정에서 가변되는 가중치 및/또는 신경망 학습이 완료된 가중치를 포함할 수 있다. 신경망 학습 과정에서 가변되는 가중치는 학습 사이클이 시작되는 시점의 가중치 및/또는 학습 사이클 동안 가변되는 가중치를 포함할 수 있다. 신경망 학습이 완료된 가중치는 학습 사이클이 완료된 가중치를 포함할 수 있다. 따라서 신경망의 가중치를 포함한 데이터 구조는 신경망 학습 과정에서 가변되는 가중치 및/또는 신경망 학습이 완료된 가중치를 포함한 데이터 구조를 포함할 수 있다. 그러므로 상술한 가중치 및/또는 각 가중치의 조합은 신경망의 가중치를 포함한 데이터 구조에 포함되는 것으로 한다. 전술한 데이터 구조는 예시일 뿐 본 발명은 이에 제한되지 않는다.
신경망의 가중치를 포함한 데이터 구조는 직렬화(serialization) 과정을 거친 후 컴퓨터 판독가능 저장 매체(예를 들어, 메모리, 하드 디스크)에 저장될 수 있다. 직렬화는 데이터 구조를 동일하거나 다른 컴퓨팅 장치에 저장하고 나중에 다시 재구성하여 사용할 수 있는 형태로 변환하는 과정일 수 있다. 컴퓨팅 장치는 데이터 구조를 직렬화하여 네트워크를 통해 데이터를 송수신할 수 있다. 직렬화된 신경망의 가중치를 포함한 데이터 구조는 역직렬화(deserialization)를 통해 동일한 컴퓨팅 장치 또는 다른 컴퓨팅 장치에서 재구성될 수 있다. 신경망의 가중치를 포함한 데이터 구조는 직렬화에 한정되는 것은 아니다. 나아가 신경망의 가중치를 포함한 데이터 구조는 컴퓨팅 장치의 자원을 최소한으로 사용하면서 연산의 효율을 높이기 위한 데이터 구조(예를 들어, 비선형 데이터 구조에서 B-Tree, Trie, m-way search tree, AVL tree, Red-Black Tree)를 포함할 수 있다. 전술한 사항은 예시일 뿐 본 발명은 이에 제한되지 않는다.
데이터 구조는 신경망의 하이퍼 파라미터(Hyper-parameter)를 포함할 수 있다. 그리고 신경망의 하이퍼 파라미터를 포함한 데이터 구조는 컴퓨터 판독가능 매체에 저장될 수 있다. 하이퍼 파라미터는 사용자에 의해 가변되는 변수일 수 있다. 하이퍼 파라미터는 예를 들어, 학습률(learning rate), 비용 함수(cost function), 학습 사이클 반복 횟수, 가중치 초기화(Weight initialization)(예를 들어, 가중치 초기화 대상이 되는 가중치 값의 범위 설정), Hidden Unit 개수(예를 들어, 히든 레이어의 개수, 히든 레이어의 노드 수)를 포함할 수 있다. 전술한 데이터 구조는 예시일 뿐 본 발명은 이에 제한되지 않는다.
본 발명의 실시예와 관련하여 설명된 방법 또는 알고리즘의 단계들은 하드웨어로 직접 구현되거나, 하드웨어에 의해 실행되는 소프트웨어 모듈로 구현되거나, 또는 이들의 결합에 의해 구현될 수 있다. 소프트웨어 모듈은 RAM(Random Access Memory), ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리(Flash Memory), 하드 디스크, 착탈형 디스크, CD-ROM, 또는 본 발명이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터 판독가능 기록매체에 상주할 수도 있다.
본 발명의 구성 요소들은 하드웨어인 컴퓨터와 결합되어 실행되기 위해 프로그램(또는 애플리케이션)으로 구현되어 매체에 저장될 수 있다. 본 발명의 구성 요소들은 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있으며, 이와 유사하게, 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다.
본 발명의 기술 분야에서 통상의 지식을 가진 자는 여기에 개시된 실시예들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 프로세서들, 수단들, 회로들 및 알고리즘 단계들이 전자 하드웨어, (편의를 위해, 여기에서 "소프트웨어"로 지칭되는) 다양한 형태들의 프로그램 또는 설계 코드 또는 이들 모두의 결합에 의해 구현될 수 있다는 것을 이해할 것이다. 하드웨어 및 소프트웨어의 이러한 상호 호환성을 명확하게 설명하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들 및 단계들이 이들의 기능과 관련하여 위에서 일반적으로 설명되었다. 이러한 기능이 하드웨어 또는 소프트웨어로서 구현되는지 여부는 특정한 애플리케이션 및 전체 시스템에 대하여 부과되는 설계 제약들에 따라 좌우된다. 본 발명의 기술 분야에서 통상의 지식을 가진 자는 각각의 특정한 애플리케이션에 대하여 다양한 방식들로 설명된 기능을 구현할 수 있으나, 이러한 구현 결정들은 본 발명의 범위를 벗어나는 것으로 해석되어서는 안 될 것이다.
여기서 제시된 다양한 실시예들은 방법, 장치, 또는 표준 프로그래밍 및/또는 엔지니어링 기술을 사용한 제조 물품(article)으로 구현될 수 있다. 용어 "제조 물품"은 임의의 컴퓨터-판독가능 장치로부터 액세스 가능한 컴퓨터 프로그램, 캐리어, 또는 매체(media)를 포함한다. 예를 들어, 컴퓨터-판독가능 매체는 자기 저장 장치(예를 들면, 하드 디스크, 플로피 디스크, 자기 스트립, 등), 광학 디스크(예를 들면, CD, DVD, 등), 스마트 카드, 및 플래쉬 메모리 장치(예를 들면, EEPROM, 카드, 스틱, 키 드라이브, 등)를 포함하지만, 이들로 제한되는 것은 아니다. 또한, 여기서 제시되는 다양한 저장 매체는 정보를 저장하기 위한 하나 이상의 장치 및/또는 다른 기계-판독가능한 매체를 포함한다. 용어 "기계-판독가능 매체"는 명령(들) 및/또는 데이터를 저장, 보유, 및/또는 전달할 수 있는 무선 채널 및 다양한 다른 매체를 포함하지만, 이들로 제한되는 것은 아니다.
제시된 프로세스들에 있는 단계들의 특정한 순서 또는 계층 구조는 예시적인 접근들의 일례임을 이해하도록 한다. 설계 우선순위들에 기반하여, 본 발명의 범위 내에서 프로세스들에 있는 단계들의 특정한 순서 또는 계층 구조가 재배열될 수 있다는 것을 이해하도록 한다. 첨부된 방법 청구항들은 샘플 순서로 다양한 단계들의 엘리먼트들을 제공하지만 제시된 특정한 순서 또는 계층 구조에 한정되는 것을 의미하지는 않는다.
제시된 실시예들에 대한 설명은 임의의 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 이용하거나 또는 실시할 수 있도록 제공된다. 이러한 실시예들에 대한 다양한 변형들은 본 발명의 기술 분야에서 통상의 지식을 가진 자에게 명백할 것이며, 여기에 정의된 일반적인 원리들은 본 발명의 범위를 벗어남이 없이 다른 실시예들에 적용될 수 있다. 그리하여, 본 발명은 여기에 제시된 실시예들로 한정되는 것이 아니라, 여기에 제시된 원리들 및 신규한 특징들과 일관되는 최광의의 범위에서 해석되어야 할 것이다.
상기와 같은 발명의 실시를 위한 최선의 형태에서 관련 내용을 기술하였다.
본 발명은 3D 랜더링 이미지 관련 분야에서 활용될 수 있다.
Claims (10)
- 컴퓨팅 장치의 하나 이상의 프로세서에서 수행되는 방법에 있어서,특정 객체를 중심으로 다양한 시점에서 촬영한 복수의 이미지를 획득하는 단계;상기 복수의 이미지 각각에 대한 전처리를 통해 각 이미지에 대응하는 오브젝트 마스크 및 카메라 정보를 획득하는 단계;상기 각 이미지에 대응하는 오브젝트 마스크에 기초하여 복수의 이미지 각각에 대응하는 복수의 배경 이미지를 획득하는 단계;상기 복수의 배경 이미지 및 각 배경 이미지에 대응하는 카메라 정보에 기초하여 깊이 정보를 획득하는 단계; 및상기 복수의 배경 이미지, 상기 각 배경 이미지에 대응하는 상기 카메라 정보 및 상기 깊이 정보에 기초하여 큐브맵을 획득하는 단계;를 포함하는,다시점에 관련한 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법.
- 제1항에 있어서,상기 복수의 이미지는,하나의 카메라를 활용하여 획득된 다시점 이미지들을 포함하며,각 이미지는, 인접한 시점에 관련한 인접 이미지들과 적어도 일부가 중첩 영역을 형성하도록 촬영된 이미지인 것을 특징으로 하는,다시점에 관련한 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법.
- 제1항에 있어서,상기 복수의 이미지 각각에 대한 전처리를 통해 각 이미지에 대응하는 오브젝트 마스크 및 카메라 정보를 획득하는 단계는,상기 복수의 이미지 각각에서 특징점을 추출하는 단계;상기 추출된 특징점을 인접 이미지와 매칭하는 단계;상기 매칭된 점들을 기반으로 각 이미지에 대응하는 초기 카메라 정보를 획득하는 단계; 및상기 초기 카메라 정보에 대한 최적화 수행하여 각 이미지에 대응하는 상기 카메라 정보를 획득하는 단계;를 포함하는,다시점에 관련한 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법.
- 제1항에 있어서,상기 복수의 이미지 각각에 대한 전처리를 통해 각 이미지에 대응하는 오브젝트 마스크 및 카메라 정보를 획득하는 단계는,딥러닝 기반 알고리즘을 통해 상기 각 이미지에서 상기 특정 객체에 관련한 오브젝트 마스크를 추출하는 단계;를 포함하는,다시점에 관련한 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법.
- 제1항에 있어서,상기 복수의 배경 이미지 및 각 이미지에 대응하는 카메라 정보에 기초하여 깊이 정보를 획득하는 단계는,MVS(Multi-View Stereo) 알고리즘을 활용하여 각 배경 이미지에 대응하는 깊이 정보를 추출하는 것을 특징으로 하며,상기 깊이 정보는,각 이미지에 포함된 객체들이 카메라로부터 떨어진 거리에 관련한 정보를 포함하는,다시점에 관련한 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법.
- 제1항에 있어서,상기 큐브맵을 획득하는 단계는,각 배경 이미지에 대응하는 카메라 정보 및 깊이 정보에 기초하여 상기 복수의 배경 이미지를 3차원 공간으로 투영시키는 단계; 및상기 3차원 공간 상에 투영된 복수의 배경 이미지에 기초하여 상기 큐브맵을 획득하는 단계;를 포함하는,다시점에 관련한 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법.
- 제6항에 있어서,상기 3차원 공간 상에 투영된 복수의 배경 이미지에 기초하여 큐브맵을 획득하는 단계는,3차원 공간 상의 각 점에 대응하는 좌표를 구면 좌표계에 대응하는 구면 좌표로 변환하는 단계; 및상기 각 점의 구면 좌표 및 각 점에 대응하는 픽셀 값에 기초하여 큐브맵을 생성하는 단계;를 포함하는,다시점에 관련한 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법.
- 제1항에 있어서,상기 방법은,상기 큐브맵에 대한 보정을 수행하는 단계;를 더 포함하며,상기 보정을 수행하는 단계는,상기 큐브맵에서 결측 영역을 식별하는 단계; 및상기 결측 영역의 인접 픽셀 값에 기초하여 결측 픽셀 값을 산출하고, 상기 결측 픽셀 값을 통해 상기 결측 영역을 보충시키는 단계;를 포함하는,다시점에 관련한 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법.
- 하나 이상의 인스트럭션을 저장하는 메모리; 및상기 메모리에 저장된 상기 하나 이상의 인스트럭션을 실행하는 프로세서를 포함하고,상기 프로세서는 상기 하나 이상의 인스트럭션을 실행함으로써,제1항의 방법을 수행하는, 서버.
- 하드웨어인 컴퓨터와 결합되어, 제1항의 방법을 수행할 수 있도록 컴퓨터에서 독출가능한 기록매체에 저장된 컴퓨터프로그램.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2022-0149802 | 2022-11-10 | ||
KR1020220149802A KR102536808B1 (ko) | 2022-11-10 | 2022-11-10 | 멀티뷰 이미지 기반 관심 물체 인식 방법, 서버 및 컴퓨터 프로그램 |
KR10-2022-0150386 | 2022-11-11 | ||
KR1020220150386A KR102537808B1 (ko) | 2022-11-11 | 2022-11-11 | 다시점에 관련한 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법, 서버 및 컴퓨터 프로그램 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2024101638A1 true WO2024101638A1 (ko) | 2024-05-16 |
Family
ID=91033184
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/KR2023/013954 WO2024101638A1 (ko) | 2022-11-10 | 2023-09-15 | 다시점에 관련한 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법, 서버 및 컴퓨터 프로그램 |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2024101638A1 (ko) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120065834A (ko) * | 2010-12-13 | 2012-06-21 | 한국전자통신연구원 | 멀티 카메라 기반의 디지털 액터 생성 장치 및 그 방법 |
JP2018503151A (ja) * | 2014-04-30 | 2018-02-01 | インテル・コーポレーション | イベント空間で生じるイベントの3次元再構成における3次元再構成システムによる周囲の処理を制限するためのシステムおよび方法 |
JP2019046077A (ja) * | 2017-08-31 | 2019-03-22 | Kddi株式会社 | オブジェクト情報の複数面への投影によって視点映像を合成する映像合成装置、プログラム及び方法 |
KR102145220B1 (ko) * | 2019-02-14 | 2020-08-18 | 엔에이치엔 주식회사 | 딥러닝을 활용하여 2차원 이미지를 3차원 이미지로 변환하는 방법 및 장치 |
KR20220094813A (ko) * | 2020-12-29 | 2022-07-06 | 서울과학기술대학교 산학협력단 | 깊이 정보 추정 방법 및 장치 |
KR102537808B1 (ko) * | 2022-11-11 | 2023-05-31 | 주식회사 리빌더에이아이 | 다시점에 관련한 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법, 서버 및 컴퓨터 프로그램 |
-
2023
- 2023-09-15 WO PCT/KR2023/013954 patent/WO2024101638A1/ko unknown
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120065834A (ko) * | 2010-12-13 | 2012-06-21 | 한국전자통신연구원 | 멀티 카메라 기반의 디지털 액터 생성 장치 및 그 방법 |
JP2018503151A (ja) * | 2014-04-30 | 2018-02-01 | インテル・コーポレーション | イベント空間で生じるイベントの3次元再構成における3次元再構成システムによる周囲の処理を制限するためのシステムおよび方法 |
JP2019046077A (ja) * | 2017-08-31 | 2019-03-22 | Kddi株式会社 | オブジェクト情報の複数面への投影によって視点映像を合成する映像合成装置、プログラム及び方法 |
KR102145220B1 (ko) * | 2019-02-14 | 2020-08-18 | 엔에이치엔 주식회사 | 딥러닝을 활용하여 2차원 이미지를 3차원 이미지로 변환하는 방법 및 장치 |
KR20220094813A (ko) * | 2020-12-29 | 2022-07-06 | 서울과학기술대학교 산학협력단 | 깊이 정보 추정 방법 및 장치 |
KR102537808B1 (ko) * | 2022-11-11 | 2023-05-31 | 주식회사 리빌더에이아이 | 다시점에 관련한 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법, 서버 및 컴퓨터 프로그램 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020096368A1 (en) | Image resynthesis using forward warping, gap discriminators, and coordinate-based inpainting | |
WO2020096403A1 (en) | Textured neural avatars | |
JP6489551B2 (ja) | 画像のシーケンスにおいて前景を背景から分離する方法およびシステム | |
US11024060B1 (en) | Generating neutral-pose transformations of self-portrait images | |
WO2022108031A1 (en) | Image generators with conditionally-independent pixel synthesis | |
US20220343525A1 (en) | Joint depth prediction from dual-cameras and dual-pixels | |
CN110189397A (zh) | 一种图像处理方法及装置、计算机设备和存储介质 | |
WO2021177596A1 (en) | Fast bi-layer neural synthesis of one-shot realistic images of neural avatar | |
WO2023193474A1 (zh) | 信息处理方法、装置、计算机设备及存储介质 | |
WO2023085854A1 (en) | Method for building scene representation with feed-forward correction for real-time view synthesis | |
CN116157805A (zh) | 利用神经嵌入的相机图像或视频处理流水线 | |
EP4367628A1 (en) | Image processing method and related device | |
WO2024155137A1 (ko) | 비주얼 로컬라이제이션을 수행하기 위한 방법 및 장치 | |
Schöntag et al. | Towards cross domain transfer learning for underwater correspondence search | |
WO2022115991A1 (en) | Incremental 2d-to-3d pose lifting for fast and accurate human pose estimation | |
WO2024101638A1 (ko) | 다시점에 관련한 복수의 이미지를 통해 큐브맵을 생성하기 위한 방법, 서버 및 컴퓨터 프로그램 | |
CN117315758A (zh) | 面部表情的检测方法、装置、电子设备及存储介质 | |
WO2023075508A1 (ko) | 전자 장치 및 그 제어 방법 | |
CN114399423B (zh) | 图像内容移除方法、系统、介质、设备及数据处理终端 | |
Chesakov et al. | A new face swap method for image and video domains: a technical report | |
WO2021150016A1 (en) | Methods and systems for performing tasks on media using attribute specific joint learning | |
WO2023003642A1 (en) | Adaptive bounding for three-dimensional morphable models | |
CN114898244A (zh) | 一种信息处理方法、装置、计算机设备及存储介质 | |
WO2024106929A1 (ko) | 비주얼 로컬라이제이션을 이용하여 카메라 포즈의 유효성을 결정하기 위한 방법 및 장치 | |
WO2024106928A1 (ko) | 비주얼 로컬라이제이션을 이용하여 카메라 포즈의 유효성을 결정하기 위한 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 23888903 Country of ref document: EP Kind code of ref document: A1 |