WO2018212514A1 - Method and apparatus for processing 360-degree image - Google Patents

Method and apparatus for processing 360-degree image Download PDF

Info

Publication number
WO2018212514A1
WO2018212514A1 PCT/KR2018/005440 KR2018005440W WO2018212514A1 WO 2018212514 A1 WO2018212514 A1 WO 2018212514A1 KR 2018005440 W KR2018005440 W KR 2018005440W WO 2018212514 A1 WO2018212514 A1 WO 2018212514A1
Authority
WO
WIPO (PCT)
Prior art keywords
degree image
motion vector
motion vectors
image
rotation
Prior art date
Application number
PCT/KR2018/005440
Other languages
French (fr)
Korean (ko)
Inventor
사-가리가앨버트
반디니앨레산드로
매스트리토마소
Original Assignee
삼성전자 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from GB1708001.1A external-priority patent/GB2562529B/en
Application filed by 삼성전자 주식회사 filed Critical 삼성전자 주식회사
Priority to US16/606,004 priority Critical patent/US20210142452A1/en
Priority to DE112018002554.3T priority patent/DE112018002554T5/en
Priority to CN201880032626.7A priority patent/CN110622210A/en
Publication of WO2018212514A1 publication Critical patent/WO2018212514A1/en

Links

Images

Classifications

    • G06T5/80
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30241Trajectory

Definitions

  • the present disclosure relates to a recording medium on which a method for processing a 360 degree image, a device for processing a 360 degree image, and a program for processing a 360 degree image are recorded.
  • VR virtual reality
  • the stabilization of the image can be performed in the post-processing step of the image, most image stabilization technology has to perform two separate tasks. Firstly, the task of detecting and suppressing unintended camera movement from the estimated camera trajectory should be performed, and secondly, generating a new image sequence using the stable trajectory of the camera and the original image sequence. Should be. However, it is difficult to estimate the camera trajectory in the uncorrected single-view imaging system, and generating new images from the stabilized camera view is also difficult to reliably perform. Therefore, further research is required to stabilize the 360 degree image.
  • the disclosed embodiment provides a method and apparatus for processing a 360 degree image capable of stabilizing an image by converting a motion vector of the 360 degree image into rotation information and using the same to correct distortion caused by shaking included in the 360 degree image. I would like to.
  • a method of processing a 360 degree image may include: obtaining a plurality of motion vectors with respect to the 360 degree image; Determining at least one motion vector representing global rotation of a 360 degree image among the plurality of motion vectors through filtering; Obtaining three-dimensional rotation information of a 360 degree image by three-dimensionally transforming the determined at least one motion vector; And correcting the distortion of the 360 degree image due to the shaking based on the obtained 3D rotation information.
  • the determining of the at least one motion vector includes removing a motion vector included in a predetermined region according to a type of projection among a plurality of motion vectors. can do.
  • a method of processing a 360 degree image comprises: generating a mask based on an edge detected from the 360 degree image; Determining a region where no texture exists in the 360 degree image by applying the generated mask to the 360 degree image; And removing a motion vector included in a region in which no texture exists among the plurality of motion vectors.
  • the determining of the at least one motion vector comprises: detecting at least one moving object from the 360 degree image through a preset object detection process; And removing the motion vector associated with the detected object among the plurality of motion vectors.
  • the determining of the at least one motion vector may include: motion vectors positioned opposite to each other on a unitsphere from which a 360-degree image is projected from among the plurality of motion vectors
  • a motion vector that is parallel, has the opposite sign, and has a magnitude within a certain threshold may be determined as a motion vector representing global rotation.
  • obtaining the three-dimensional rotation information the step of classifying the determined at least one motion vector into a plurality of bins corresponding to a specific direction and a specific size range; Selecting a bin containing the most motion vectors of the sorted plurality of bins; And converting the direction and the distance of the selected bin to obtain the 3D rotation information.
  • the obtaining of the 3D rotation information may include applying the weighted average to the directions and distances of the selected bin and a plurality of bins adjacent to the selected bin, and thus the 3D rotation information Can be obtained.
  • the obtaining of the 3D rotation information may obtain, as the 3D rotation information, a rotation value for minimizing the sum of the determined at least one motion vector.
  • the obtaining of the 3D rotation information may include obtaining the 3D rotation information based on a plurality of motion vectors using a previously generated learning network model. have.
  • a method of processing a 360 degree image may further include acquiring sensor data generated as a result of sensing a shake generated when capturing a 360 degree image through a photographing apparatus, and detecting distortion of the 360 degree image.
  • the distortion of the 360 degree image may be corrected by combining the acquired sensor data and the 3D rotation information.
  • an apparatus for processing a 360 degree image may include a memory configured to store one or more instructions; And a processor that executes one or more instructions stored in a memory, wherein the processor obtains a plurality of motion vectors for the 360 degree image, and filters the at least one representing a global rotation of the 360 degree image among the plurality of motion vectors. Determine a motion vector of the at least one motion vector, and three-dimensionally convert the determined at least one motion vector to obtain three-dimensional rotation information of the 360-degree image, and correct the distortion of the 360-degree image due to shaking based on the obtained three-dimensional rotation information. You can correct it.
  • FIG. 1 is a diagram illustrating a format in which a 360 degree image is stored, according to an exemplary embodiment.
  • FIG. 2 is a flowchart illustrating a method of processing a 360-degree image by the image processing apparatus according to an exemplary embodiment.
  • FIG. 3 is a flowchart illustrating a method of processing a 360-degree image by the image processing apparatus according to an exemplary embodiment in more detail.
  • FIG. 4 is a diagram for describing a motion vector in a 360 degree image, according to an exemplary embodiment.
  • FIG. 5 is a diagram for describing a method of removing, by filtering, a motion vector of a predetermined region from a plurality of motion vectors by an image processing apparatus, according to an exemplary embodiment.
  • FIG. 6 is a diagram for describing a method of removing, by the image processing apparatus, a motion vector included in a texture free area through filtering, according to an exemplary embodiment.
  • FIG. 7 is a diagram for describing a method of removing, by the image processing apparatus, a motion vector determined to not be global rotation through filtering, according to an exemplary embodiment.
  • FIG. 8 is a flowchart for describing a method of determining, by the image processing apparatus, a motion vector indicating global rotation through filtering, according to an exemplary embodiment.
  • FIG. 9 is a flowchart illustrating a method of converting a motion vector into 3D rotation by an image processing apparatus, according to an exemplary embodiment.
  • FIG. 10 illustrates a motion vector of a 360 degree image, according to an exemplary embodiment.
  • 11 is a table for describing a result of classifying a plurality of motion vectors into a plurality of bins, according to an exemplary embodiment.
  • FIG. 12 illustrates a histogram of a plurality of motion vectors classified in FIG. 11 according to an exemplary embodiment.
  • FIG. 13 is a flowchart for describing a method of determining, by an image processing apparatus, rotation information obtained by combining a rotation information acquired based on a motion vector and sensing data about shaking for a 360 degree image.
  • FIG. 14 is a block diagram of an image processing apparatus according to an exemplary embodiment.
  • 15 is a diagram for describing at least one processor, according to an exemplary embodiment.
  • 16 is a block diagram of a data learner, according to an exemplary embodiment.
  • 17 is a block diagram of a data recognizer according to an exemplary embodiment.
  • FIG. 18 is a block diagram of an image processing apparatus according to another exemplary embodiment.
  • a method of processing a 360 degree image may include: obtaining a plurality of motion vectors with respect to the 360 degree image; Determining at least one motion vector representing global rotation of a 360 degree image among the plurality of motion vectors through filtering; Obtaining three-dimensional rotation information of a 360 degree image by three-dimensionally transforming the determined at least one motion vector; And correcting the distortion of the 360 degree image due to the shaking based on the obtained 3D rotation information.
  • the determining of the at least one motion vector includes removing a motion vector included in a predetermined region according to a type of projection among a plurality of motion vectors. can do.
  • a method of processing a 360 degree image comprises: generating a mask based on an edge detected from the 360 degree image; Determining a region where no texture exists in the 360 degree image by applying the generated mask to the 360 degree image; And removing a motion vector included in a region in which no texture exists among the plurality of motion vectors.
  • the determining of the at least one motion vector comprises: detecting at least one moving object from the 360 degree image through a preset object detection process; And removing the motion vector associated with the detected object among the plurality of motion vectors.
  • the determining of the at least one motion vector may include: motion vectors positioned opposite to each other on a unitsphere from which a 360-degree image is projected from among the plurality of motion vectors
  • a motion vector that is parallel, has the opposite sign, and has a magnitude within a certain threshold may be determined as a motion vector representing global rotation.
  • obtaining the three-dimensional rotation information the step of classifying the determined at least one motion vector into a plurality of bins corresponding to a specific direction and a specific size range; Selecting a bin containing the most motion vectors of the sorted plurality of bins; And converting the direction and the distance of the selected bin to obtain the 3D rotation information.
  • the obtaining of the 3D rotation information may include applying the weighted average to the directions and distances of the selected bin and a plurality of bins adjacent to the selected bin, and thus the 3D rotation information Can be obtained.
  • the obtaining of the 3D rotation information may obtain, as the 3D rotation information, a rotation value for minimizing the sum of the determined at least one motion vector.
  • the obtaining of the 3D rotation information may include obtaining the 3D rotation information based on a plurality of motion vectors using a previously generated learning network model. have.
  • a method of processing a 360 degree image may further include acquiring sensor data generated as a result of sensing a shake generated when capturing a 360 degree image through a photographing apparatus, and detecting distortion of the 360 degree image.
  • the distortion of the 360 degree image may be corrected by combining the acquired sensor data and the 3D rotation information.
  • an apparatus for processing a 360 degree image may include a memory configured to store one or more instructions; And a processor that executes one or more instructions stored in a memory, wherein the processor obtains a plurality of motion vectors for the 360 degree image, and filters the at least one representing a global rotation of the 360 degree image among the plurality of motion vectors. Determine a motion vector of the at least one motion vector, and three-dimensionally convert the determined at least one motion vector to obtain three-dimensional rotation information of the 360-degree image, and correct the distortion of the 360-degree image due to shaking based on the obtained three-dimensional rotation information. You can correct it.
  • first and second may be used to describe various components, but the components are not limited by the terms. The terms are only used to distinguish one component from another.
  • first component may be referred to as the second component, and similarly, the second component may also be referred to as the first component.
  • any part of the specification is to “include” any component, this means that it may further include other components, except to exclude other components unless otherwise stated.
  • the term “part” as used herein refers to a hardware component such as software, a field programmable gate array (FPGA), or an application specific integrated circuit (ASIC), and the “part” performs certain roles. However, “part” is not meant to be limited to software or hardware.
  • the “unit” may be configured to be in an addressable storage medium and may be configured to play one or more processors.
  • a “part” refers to components such as software components, object-oriented software components, class components, and task components, processes, functions, properties, procedures, Subroutines, segments of program code, drivers, firmware, microcode, circuits, data, databases, data structures, tables, arrays and variables.
  • the functionality provided within the components and “parts” may be combined into a smaller number of components and “parts” or further separated into additional components and “parts”.
  • FIG. 1 is a diagram illustrating a format in which a 360 degree image is stored, according to an exemplary embodiment.
  • a 360 degree image may be stored in various formats.
  • the pixels that make up the frame of a 360 degree image can be indexed in a three-dimensional coordinate system that defines the location of each pixel on the surface of the virtual sphere 110. have.
  • cube map projection 120 image data for each face of the virtual cube may be stored as a two-dimensional image over a 90 ° ⁇ 90 ° field of view.
  • image data may be stored as a single two-dimensional image over a 360 ° ⁇ 180 ° field of view.
  • the labels 'top', 'bottom', 'front', 'back', 'left' and 'right' indicate areas of 360-degree images respectively corresponding to the equivalent projection described above.
  • the formats shown in FIG. 1 are just examples, and according to another exemplary embodiment, the 360 degree image may be stored in a format different from the format shown in FIG. 1.
  • FIG. 2 is a flowchart illustrating a method of processing a 360-degree image by the image processing apparatus according to an exemplary embodiment.
  • the image processing apparatus may acquire a plurality of motion vectors for the 360 degree image.
  • a motion vector in two-dimensional image data for a 360 degree image is shown in FIG. 4.
  • FIG. 4 is a diagram for describing a motion vector in a 360 degree image, according to an exemplary embodiment.
  • the motion vector is information describing the displacement of a predetermined area 411 of the image between the reference frame 401 and the current frame 402.
  • the frame immediately before the image is selected as the reference frame 401, but in another embodiment, the motion vector may be calculated using the non-contiguous frame as the reference frame.
  • the motion vector may be obtained at a point uniformly distributed throughout the frame.
  • a plurality of 3D motion vectors may be obtained.
  • image data for the current frame is stored using the unit sphere representation shown in FIG. 1, a 3D motion vector may be obtained.
  • the plurality of motion vectors obtained in this embodiment are motion vectors previously generated while encoding the image data of the frame of the 360 degree image.
  • Motion vectors can generally be generated and stored in existing video encoding processes such as MPEG 4.2 or H.264 encoding. During encoding of the image, the motion vector can be used to compress the image data by reusing the blocks of the previous frame to draw the next frame. A detailed description of the method for generating the motion vector will be omitted.
  • the previously generated motion vector may be retrieved from the stored 360 degree image file. Reusing motion vectors in this way can reduce the overall processing burden.
  • the motion vector may be generated in step S210.
  • the image processing apparatus may determine at least one motion vector indicating global rotation of the 360 degree image among the plurality of motion vectors through filtering.
  • 'global rotation' refers to a rotation that affects the image throughout the frame, unlike a local rotation that affects only part of the image.
  • Global rotation can be the result of the camera being rotated while the image is being captured, or a large portion of the frame moving around the camera in the same way. For example, if a 360-degree image is taken from a moving vehicle, the rotation of the vehicle can cause global rotation in the background, and the rotation of the camera itself can cause global rotation in all parts of the vehicle visible in the background and foreground. .
  • Rotation can be regarded as 'global rotation' when it affects a significant portion of the frame.
  • Examples of motion vectors that do not represent global rotation may include motion vectors associated with objects of relatively smaller movement in the scene, or motion vectors associated with static objects that do not appear to rotate when the camera rotates as they are fixed relative to the camera. have.
  • the image processing apparatus may perform filtering to remove a motion vector included in a predetermined region among the plurality of motion vectors. This will be described later in more detail with reference to FIG. 5.
  • the image processing apparatus may perform filtering to generate a mask based on edges detected from the 360 degree image, and apply the generated mask to the 360 degree image to texture-free the 360 degree image.
  • Motion vectors included in the region can be removed. This will be described later in more detail with reference to FIG. 6.
  • the image processing apparatus may perform filtering to remove a motion vector associated with a moving object in a 360 degree image.
  • the image processing apparatus may determine whether a motion vector located on the opposite side of the unit sphere satisfies a specific condition, and determine whether the motion vector indicates global rotation to perform filtering. This will be described later in more detail with reference to FIG. 7.
  • the image processing apparatus may combine two or more of the above-described filtering methods to remove a motion vector that does not represent global rotation among the plurality of motion vectors.
  • other filtering methods may be used.
  • Other embodiments in which the motion vector may be filtered may include, but are not limited to, static object filtering, background flow subtraction, and manual filtering.
  • static object filtering static objects that do not change their position from one frame to the next may be detected, and motion vectors associated with the static objects may be filtered.
  • static object types that can occur in 360-degree images include black pixels on the lens or the user's finger in front of the camera.
  • background pixels moving at a constant rate in the entire image may be excluded, assuming that they do not contain useful information for calculating the stabilization rotation.
  • Manual filtering may include a human operator that manually filters the motion vector.
  • the image processing apparatus may obtain 3D rotation information about the 360 degree image by 3D transforming the determined at least one motion vector.
  • the image processing apparatus may classify the determined at least one motion vector into a plurality of bins corresponding to a specific direction and a specific size range.
  • the image processing apparatus may obtain the 3D rotation information by converting the direction and the distance of the bin including the most motion vectors among the plurality of classified bins.
  • the image processing apparatus may obtain the 3D rotation information by applying a weighted average to the directions and distances of the bin including the most motion vectors and the plurality of bins adjacent to the bin. have.
  • the image processing apparatus may obtain, as 3D rotation information, a rotation value for minimizing the sum of the determined at least one motion vector.
  • the image processing apparatus may obtain 3D rotation information based on a plurality of motion vectors using a previously generated learning network model.
  • humans can stabilize their gaze while maintaining their eye level by analyzing image shifts (similar to motion vectors) caused by movement to the environment as the body rotates. Similar behavior can be observed in simpler samples, such as flies, with relatively few neurons.
  • Neurons can convert sensory information into a format corresponding to their motor system requirements.
  • a machine learning mechanism may be used to mimic the behavior of living things and to obtain sensor rotational transformations using motion vectors as input data.
  • a machine learning system may be used, such as a learning network model trained with a pattern of motion vectors in a frame having a particular rotation. Such mechanisms tend to mimic living beings and may receive a plurality of motion vectors as inputs and output an overall rotation for stabilizing a 360 degree image.
  • the image processing apparatus may correct the distortion of the 360 degree image due to the shaking based on the obtained 3D rotation information.
  • the image processing apparatus may correct the distortion of the 360 degree image due to the shaking by rotating the 360 degree image according to the 3D rotation information.
  • the image processing apparatus may render and display the corrected 360-degree image, or encode and store it for later playback.
  • FIG. 3 is a flowchart illustrating a method of processing a 360-degree image by the image processing apparatus according to an exemplary embodiment in more detail.
  • all the steps of the method disclosed in FIG. 3 may be performed in the same apparatus, and each of the steps may be performed in different apparatuses. 3 may be performed by software or hardware according to an embodiment.
  • an apparatus for performing the method disclosed in FIG. 3 includes a processing unit comprising one or more processors, and a computer reading storing computer program instructions executable by the processing unit to perform the method. Possible memory may be included.
  • the image processing apparatus may acquire a plurality of motion vectors for the current frame of the 360 degree image.
  • the image processing apparatus may obtain a plurality of motion vectors by searching for a motion vector from a stored 360 degree image file or generating a motion vector at a point uniformly distributed throughout the frame.
  • step S310 may correspond to step S210 described above with reference to FIG. 2.
  • the image processing apparatus may perform filtering on the plurality of motion vectors.
  • the motion vector may be filtered to remove a motion vector that does not represent global rotation of the 360 degree image.
  • the image processing device may filter to detect a motion vector associated with an object of relatively smaller movement in a frame or a motion vector associated with a static object that does not appear to rotate when the camera rotates as it is fixed relative to the camera. Can be removed Examples of various methods of filtering the motion vectors will be described in more detail later with reference to FIGS. 5 to 7.
  • the motion vector may not be filtered, in which case step S320 may be omitted.
  • the image processing apparatus may convert the motion vector into 3D rotation.
  • the image processing apparatus filters a plurality of motion vectors to remove motion vectors that do not represent global rotation, and then the remaining motion vectors may be applied to the current frame to stabilize the 360 degree image. Can be converted to dimensional rotation.
  • a 360 degree image is stored as two-dimensional image data via equilateral rectangular projection, and a pre-defined transform can be used to convert the motion vector into three-dimensional rotation.
  • Pre-defined transformations may be predefined based on the geometry of the two-dimensional projection.
  • a transform according to the following equation (1) can be used.
  • Rx, Ry, and Rz represent rotations in degrees about the x, y, and z axes, respectively
  • width represents the total width of the field of view in pixels
  • height is the pixels.
  • the motion vector v can be expressed as (13, 8), for example, representing 13 pixels in the x-axis and 8 pixels in the y-axis.
  • the frame width in the horizontal direction is 36 pixels, which corresponds to 10 ° per pixel.
  • the vertical component of the motion vector may be converted into equivalent rotation about the x or y axis depending on the position of the motion vector in the frame.
  • the overall rotation required to stabilize the 360 degree image can be expressed as a three-dimensional rotation, that is, a rotation in three-dimensional space.
  • Rotation can be represented by three separate rotational components, such as axes perpendicular to one another, for example the x, y and z axes as shown in FIG.
  • the rotation obtained in step S330 may be referred to as stabilizing rotation as the camera shake may be effectively corrected to stabilize the 360 degree image.
  • each motion vector may be converted to equivalent rotation as described above, and the average rotation (eg, average or mode) over the entire frame may be considered a full rotation.
  • the average rotation eg, average or mode
  • a Gaussian or median filter may be used when taking the average in consideration of neighboring values around the average or mode value.
  • the average motion vector can be calculated for the entire frame, and the average motion vector can be transformed to full rotation using a predefined transformation.
  • Equation 1 described above may be modified as needed in other embodiments.
  • Equation 1 described above may be modified.
  • the image processing apparatus may provide 3D rotation to the image processing unit to generate a stabilized image.
  • the image processing apparatus may generate a stabilized image by applying 3D rotation to image data of the current frame.
  • the image processing apparatus may render and display the stabilized image or encode and store it for later playback.
  • the stabilized image may be encoded using interframe compression.
  • more effective compression may be achieved based on the rotation applied to the stabilized image data.
  • the image stabilization process described above modifies the frames of the original 360-degree image in a way that minimizes the difference between two consecutive frames of image data, which allows the encoder to reuse more information from previous frames, thereby interframe
  • lower bit rates can be used. As a result, the amount of key frames generated can be reduced, and thus the compression rate can be improved.
  • an analysis for determining a rotation for stabilizing an image may be performed in the first image processing apparatus, and the generating of the stabilized image may be performed by physically separating the first image processing apparatus from the first image processing apparatus. It may be performed by the second image processing apparatus.
  • the first image processing apparatus may set the value of the 3D rotation parameter in the metadata associated with the 360 degree image according to the determined rotation.
  • the first image processing apparatus may provide metadata and associated image data to the second image processing apparatus through an appropriate mechanism such as a broadcast signal or a network connection.
  • the second image processing apparatus may obtain a value of the 3D rotation parameter from the metadata to determine the rotation.
  • the second image processing apparatus may generate the stabilized 360 degree image by applying the rotation defined by the 3D rotation parameter to the 360 degree image.
  • the second image processing apparatus according to the exemplary embodiment applies a rotation and / or translation defined by the camera control input to the rotated image data before rendering the rotated image data, thereby stabilizing the 360 degree image. Can be generated.
  • FIG. 5 is a diagram for describing a method of removing, by filtering, a motion vector of a predetermined region from a plurality of motion vectors by an image processing apparatus, according to an exemplary embodiment.
  • the distance between the upper region 511 and the lower region 512 tends to be exaggerated, so that when the equilateral rectangular projection is used, the upper region 511 and the lower portion of the frame 500 are used.
  • the motion vector in region 512 can include potentially large errors.
  • the image processing apparatus may determine the motion vectors of the upper region 511 and the lower region 512 among the plurality of motion vectors when calculating rotation for stabilization of a 360 degree image. Can be removed
  • FIG. 6 is a diagram for describing a method of removing, by the image processing apparatus, a motion vector included in a texture free area through filtering, according to an exemplary embodiment.
  • the image processing apparatus may generate a mask by performing edge detection on a frame and dilatating the frame.
  • the image processing apparatus may apply a mask to the frame to remove the texture-free area, which is an area substantially free of texture.
  • the black pixels in the mask represent areas where no edges are detected, which may mean areas that are substantially free of texture.
  • the mask may be thresholded to include only pixel values of 1 or 0, where 1 may represent white pixels and 0 may represent black pixels.
  • the image processing apparatus may perform filtering by comparing the position of the motion vector in the 360 degree image with the pixel value of the mask and discarding the motion vector when the mask has the pixel value 0 at the position.
  • the motion vector of the texture-free region is removed through filtering.
  • the motion vector may be filtered from another type of region that may include an unreliable motion vector. It may be. Examples of other types of regions that may include unreliable motion vectors may include regions exhibiting chaotic movement such as foliage or smoke.
  • FIG. 7 is a diagram for describing a method of removing, by the image processing apparatus, a motion vector determined to not be global rotation through filtering, according to an exemplary embodiment.
  • the image processing apparatus may perform filtering by using a fact that a global rotation in a 360 degree image generates motion vectors having similar magnitudes and opposite directions on opposite sides of the unit sphere. Specifically, the image processing apparatus compares one or more motion vectors in or near the unitary sphere with one or more corresponding motion vectors on the opposite side of the sphere, referred to as " mirror points, " It can be determined.
  • the image processing apparatus may determine that two motion vectors opposite to each other have a magnitude within a specific threshold (eg, ⁇ 10%), are parallel to each other, and have signs in opposite directions, and are motion vectors indicating global rotation.
  • a specific threshold eg, ⁇ 10%
  • the image processing apparatus may use it to determine the rotation for stabilization of the 360 degree image.
  • FIG. 8 is a flowchart for describing a method of determining, by the image processing apparatus, a motion vector indicating global rotation through filtering, according to an exemplary embodiment.
  • Steps S810 to S890 described with reference to FIG. 8 may be performed between steps S310 and S330 described above with reference to FIG. 3.
  • the image processing apparatus may filter motion vectors of at least one region of the plurality of motion vectors for the 360 degree image. For example, when an equilateral rectangular projection is used for a 360 degree image, the image processing apparatus may remove motion vectors in an upper region and a lower region of the 360 degree image through filtering.
  • the image processing apparatus may generate a mask for filtering the texture-free area.
  • the image processing apparatus may generate a mask by performing edge detection on a 360 degree image and expanding the same.
  • the image processing apparatus may apply a mask to the current frame to filter the motion vector of the texture-free region. For example, the image processing apparatus compares the position of the motion vector in the 360 degree image with the pixel value of the mask, and removes the motion vector if the mask has pixel value 0 (the area where no edge is detected) at that position, Filtering can be performed.
  • the image processing apparatus may detect an object moving in the 360 degree image.
  • the image processing apparatus may detect one or more moving objects within a 360 degree image by using an appropriate object detection algorithm among existing object detection algorithms.
  • the image processing apparatus may filter a motion vector associated with the moving object.
  • the image processing apparatus may remove the motion vector associated with the moving object among the remaining motion vectors through filtering.
  • the motion vector associated with the moving object can be much larger in size than other motion vectors. Accordingly, the image processing apparatus may filter the motion vector so that the stabilization rotation is not distorted by the large motion vector due to the fast moving object.
  • the image processing apparatus may compare motion vectors on opposite sides of the sphere.
  • the image processing apparatus may determine whether the motion vector corresponds to the global rotation. For example, the image processing apparatus may determine that two motion vectors opposite to each other have a magnitude within a specific threshold (eg, ⁇ 10%) and are parallel to each other and have signs in opposite directions. .
  • a specific threshold eg, ⁇ 10%
  • the image processing apparatus may maintain the motion vector.
  • the image processing apparatus may exclude the motion vector when calculating the rotation.
  • FIG. 9 is a flowchart illustrating a method of converting a motion vector into 3D rotation by an image processing apparatus, according to an exemplary embodiment.
  • the image processing apparatus may classify the plurality of motion vectors into a plurality of bins corresponding to a specific size range in a specific direction.
  • FIG. 10 illustrates a motion vector of a 360 degree image, according to an exemplary embodiment.
  • FIG. 10 illustrates a motion vector for a 360 degree image after applying the mask illustrated in FIG. 6.
  • the present embodiment for simplicity of explanation, only the motion vector in the horizontal (x-axis) direction is shown.
  • this is merely an example, and the method applied to the present embodiment may be extended to motion vectors of other axes to determine three-dimensional rotation.
  • 11 is a table for describing a result of classifying a plurality of motion vectors into a plurality of bins, according to an exemplary embodiment.
  • the distance associated with a particular bin may be converted into an equivalent angle using a predetermined transformation as described above with reference to step S330 of FIG. 3.
  • the motion vector has a value between -1 and +12.
  • FIG. 12 illustrates a histogram of a plurality of motion vectors classified in FIG. 11 according to an exemplary embodiment.
  • the most motion vector is included in the bin at the distance 7 corresponding to the 20th.
  • the image processing apparatus may identify bins including the largest number of motion vectors among the plurality of bins. As described above with reference to FIG. 12, the image processing apparatus may identify that the most motion vector is included in the bin at a distance of 7.
  • the image processing apparatus may calculate a rotation based on a weighted average based on the identified bin and the neighboring bin.
  • the distance 7 corresponding to the bin identified in step S920 described above is equivalent to a rotation of 0.043 radians (2.46 °).
  • the image processing apparatus may determine a rotation for stabilizing a 360 degree image by converting a distance corresponding to the identified bin into an equivalent rotation by using a predetermined transformation.
  • the analysis is performed based on a 360 degree image in which the actual camera rotation is measured in 0.04109753 radians. It can be seen that it is a reasonable estimate of the actual camera rotation.
  • the image processing apparatus may calculate the rotation using a weighted average across the bins identified in step S920 and the plurality of neighboring bins in order to increase the accuracy of the obtained rotation value.
  • a weighted average a 3-amplitude Gaussian weighted average may be used.
  • a plurality of The rotation can be determined by summing the motion vectors vj.
  • the three-dimensional rotation for stabilizing the 360 degree image may be obtained by determining a rotation R that minimizes the entire motion field as shown in Equation 3 below.
  • FIG. 13 is a flowchart for describing a method of determining, by an image processing apparatus, rotation information obtained by combining a rotation information acquired based on a motion vector and sensing data about shaking for a 360 degree image.
  • the image processing apparatus may determine at least one motion vector indicating global rotation of the 360 degree image among the plurality of motion vectors with respect to the 360 degree image.
  • step S1310 may correspond to step S220 described above with reference to FIG. 2.
  • the image processing apparatus may obtain 3D rotation information by converting the determined at least one motion vector.
  • step S1320 may correspond to step S230 described above with reference to FIG. 2.
  • the image processing apparatus may re-determine the rotation information of the 360 degree image by combining the sensor data and the rotation information regarding the shaking obtained when the 360 degree image is captured.
  • the image processing apparatus may be set to acquire sensor data regarding shaking of the photographing apparatus while a 360 degree image is captured.
  • the image processing apparatus may consider sensor data when determining rotation.
  • the image processing apparatus may verify rotation information obtained by analyzing the motion vector using the sensor data, or verify rotation information obtained through the sensor data using the rotation information obtained by analyzing the motion vector.
  • the image processing apparatus may merge sensor data into rotation information obtained by analyzing a motion vector.
  • the result of analyzing the sensor data and the motion data may be merged by applying a weight to the sensor data and the motion vector analysis result according to the relative error margin of the sensor data with respect to the rotation information obtained by analyzing the motion vector.
  • This approach may be advantageous in scenarios in which the rotation calculated using the motion vector may have a larger error than the measurement obtained by the sensor. For example, the case where the scene has a large area without texture may be included in the above-described scenario. In this situation, more weight may be given to the sensor data.
  • Sensors on the other hand, can suffer from drift problems. The drift problem can be mitigated by combining the sensor data with the rotation computed in the motion vector.
  • FIG. 14 is a block diagram of an image processing apparatus 1400, according to an exemplary embodiment.
  • the image processing apparatus 1400 may include at least one processor 1410 and a memory 1420.
  • At least one processor 1410 may perform the processing method of the 360-degree image described above with reference to FIGS. 1 to 13. For example, the at least one processor 1410 may obtain a plurality of motion vectors for the 360 degree image. The at least one processor 1410 may determine at least one motion vector indicating global rotation of the 360 degree image among the plurality of motion vectors through filtering. In addition, the at least one processor 1410 may obtain the 3D rotation information about the 360 degree image by converting the determined at least one motion vector. The at least one processor 1410 may correct the distortion of the 360 degree image due to the shaking based on the obtained 3D rotation information.
  • the memory 1420 may store programs (one or more instructions) for processing and controlling the at least one processor 1410. Programs stored in the memory 1420 may be divided into a plurality of modules according to their functions.
  • the memory 1420 may be configured as a software module and a data learner and a data recognizer, which will be described later with reference to FIG. 15.
  • the data learning unit and the data recognizing unit may each independently include a learning network model, or share one learning network model.
  • 15 is a diagram for describing at least one processor 1410 according to an exemplary embodiment.
  • At least one processor 1410 may include a data learner 1510 and a data recognizer 1520.
  • the data learner 1510 may learn a criterion for obtaining 3D rotation information from a plurality of motion vectors for a 360 degree image.
  • the data recognizer 1520 may determine 3D rotation information from the plurality of motion vectors for the 360 degree image based on the criteria learned by the data learner 1510.
  • At least one of the data learner 1510 and the data recognizer 1520 may be manufactured in the form of at least one hardware chip and mounted on the image processing apparatus.
  • at least one of the data learner 1510 and the data recognizer 1520 may be manufactured in the form of a dedicated hardware chip for artificial intelligence (AI), or an existing general purpose processor (eg, a CPU).
  • the processor may be manufactured as a part of an application processor or a graphics processor (eg, a GPU) and mounted on the aforementioned various image processing apparatuses.
  • the data learner 1510 and the data recognizer 1520 may be mounted in one image processing apparatus, or Each may be mounted on separate image processing apparatuses.
  • one of the data learner 1510 and the data recognizer 1520 may be included in the image processing apparatus, and the other may be included in the server.
  • the data learner 1510 and the data recognizer 1520 may provide model information constructed by the data learner 1510 to the data recognizer 1520 via a wired or wireless connection.
  • the data input to 1520 may be provided to the data learner 1510 as additional learning data.
  • At least one of the data learner 1510 and the data recognizer 1520 may be implemented as a software module.
  • the software module may be computer readable non-transitory readable. It may be stored in a non-transitory computer readable media.
  • at least one software module may be provided by an operating system (OS) or by a predetermined application.
  • OS operating system
  • OS operating system
  • others may be provided by a predetermined application.
  • 16 is a block diagram of the data learner 1510, according to an exemplary embodiment.
  • the data learner 1510 may include a data acquirer 1610, a preprocessor 1620, a training data selector 1630, a model learner 1640, and a model evaluator ( 1650).
  • a data acquirer 1610 may acquire a data acquirer 1610, a preprocessor 1620, a training data selector 1630, a model learner 1640, and a model evaluator ( 1650).
  • the data learning unit 1510 may be configured with fewer components than those described above, or other components may be additionally included in the data learning unit 1510.
  • the data acquirer 1610 may acquire at least one 360 degree image as learning data.
  • the data acquirer 1610 acquires at least one 360 degree image from an image processing apparatus including the data learning unit 1510 or an external device that can communicate with the image processing apparatus including the data learning unit 1510. can do.
  • the preprocessor 1620 may process the obtained at least one 360 degree image in a preset format so that the model learner 1640, which will be described later, uses the at least one 360 degree image acquired for learning.
  • the training data selector 1630 may select a 360 degree image for learning from the preprocessed data.
  • the selected 360 degree image may be provided to the model learner 1640.
  • the training data selector 1630 may select a 360 degree image for learning from the preprocessed 360 degree images according to the set criteria.
  • the model learner 1640 may learn a criterion about whether to determine the 3D rotation information from the plurality of motion vectors by using some information from the 360 degree image in the plurality of layers in the learning network model.
  • model learner 1640 may train the data recognition model, for example, through reinforcement learning using feedback on whether the acquired 360-degree image is suitable for learning.
  • the model learner 1640 may store the trained data recognition model.
  • the model evaluator 1650 may input evaluation data into the learning network model, and if the recognition result output from the evaluation data does not satisfy a predetermined criterion, the model evaluator 1640 may retrain the model.
  • the evaluation data may be preset data for evaluating the learning network model.
  • At least one of the data acquirer 1610, the preprocessor 1620, the training data selector 1630, the model learner 1640, and the model evaluator 1650 in the data learner 1510 may be at least one. It may be manufactured in the form of a hardware chip and mounted on an image processing apparatus.
  • at least one of the data acquirer 1610, the preprocessor 1620, the training data selector 1630, the model learner 1640, and the model evaluator 1650 may be artificial intelligence (AI).
  • AI artificial intelligence
  • It may be manufactured in the form of a dedicated hardware chip, or may be manufactured as part of an existing general purpose processor (eg, a CPU or an application processor) or a graphics dedicated processor (eg, a GPU) and mounted on the above-described various image processing apparatuses.
  • a general purpose processor eg, a CPU or an application processor
  • a graphics dedicated processor eg, a GPU
  • the data acquirer 1610, the preprocessor 1620, the training data selector 1630, the model learner 1640, and the model evaluator 1650 may be mounted in one image processing apparatus or may be separate. May be mounted on the respective image processing apparatuses. For example, some of the data acquirer 1610, the preprocessor 1620, the training data selector 1630, the model learner 1640, and the model evaluator 1650 are included in the image processing apparatus, and some of the remaining data are included in the image processing apparatus. May be included in the server.
  • At least one of the data acquirer 1610, the preprocessor 1620, the training data selector 1630, the model learner 1640, and the model evaluator 1650 may be implemented as a software module.
  • at least one software module may be provided by an operating system (OS) or by a predetermined application.
  • OS operating system
  • OS operating system
  • some of the at least one software module may be provided by an operating system (OS), and others may be provided by a predetermined application.
  • 17 is a block diagram of a data recognizer 1520 according to an embodiment.
  • the data recognizer 1520 includes a data acquirer 1710, a preprocessor 1720, a recognition data selector 1730, a recognition result provider 1740, and a model updater. (1750).
  • the data acquirer 1710 may acquire at least one 360 degree image, and the preprocessor 1720 may preprocess the obtained at least one 360 degree image.
  • the preprocessor 1720 may generate at least one 360-degree image so that the recognition result provider 1740, which will be described later, may use the at least one 360-degree image obtained for the determination of the 3D rotation information for the plurality of motion vectors.
  • the recognition data selector 1730 may select a motion vector required for determining 3D rotation information among a plurality of motion vectors included in the preprocessed data. The selected motion vector may be provided to the recognition result provider 1740.
  • the recognition result provider 1740 may determine 3D rotation information based on the selected motion vector. In addition, the recognition result providing unit 1740 may provide the determined 3D rotation information.
  • the model updater 1750 based on the evaluation of the 3D rotation information provided by the recognition result providing unit 1740, provides information on the evaluation so that the parameters of the layers included in the learning network model are updated. Reference may be provided to the model learner 1640 described above.
  • At least one of the data acquirer 1710, the preprocessor 1720, the recognition data selector 1730, the recognition result provider 1740, and the model updater 1750 in the data recognizer 1520 may be at least It may be manufactured in the form of one hardware chip and mounted on an image processing apparatus.
  • at least one of the data acquirer 1710, the preprocessor 1720, the recognition data selector 1730, the recognition result provider 1740, and the model updater 1750 may be a dedicated hardware chip for artificial intelligence. It may be manufactured in the form, or may be manufactured as a part of an existing general purpose processor (eg, a CPU or an application processor) or a graphics dedicated processor (eg, a GPU) and mounted on the above-described various image processing apparatuses.
  • an existing general purpose processor eg, a CPU or an application processor
  • a graphics dedicated processor eg, a GPU
  • the data acquirer 1710, the preprocessor 1720, the recognition data selector 1730, the recognition result provider 1740, and the model updater 1750 may be mounted in one image processing apparatus, or Each may be mounted on separate image processing apparatuses.
  • some of the data acquirer 1710, the preprocessor 1720, the recognition data selector 1730, the recognition result provider 1740, and the model updater 1750 are included in the image processing apparatus. Some may be included in the server.
  • At least one of the data acquirer 1710, the preprocessor 1720, the recognition data selector 1730, the recognition result provider 1740, and the model updater 1750 may be implemented as a software module.
  • At least one of the data acquirer 1710, the preprocessor 1720, the recognition data selector 1730, the recognition result provider 1740, and the model updater 1750 includes a software module (or instruction). If implemented as a program module, the software module may be stored in a computer readable non-transitory computer readable media.
  • at least one software module may be provided by an operating system (OS) or by a predetermined application. Alternatively, some of the at least one software module may be provided by an operating system (OS), and others may be provided by a predetermined application.
  • OS operating system
  • OS operating system
  • FIG. 18 is a block diagram of an image processing apparatus according to another exemplary embodiment.
  • the image processing apparatus includes a first apparatus 1800 for analyzing a 360 degree image to determine three-dimensional rotation information, and includes a rotation provided by the first apparatus 1800. It may include a second device 1810 for generating a stabilized image based on. In other embodiments, some or all of the components of the first device 1800 and the second device 1810 may be implemented as a single physical device.
  • the first device 1800 converts the motion vector obtaining unit 1801 to obtain a plurality of motion vectors for the 360 degree image, and converts the plurality of motion vectors into three-dimensional rotation and converts the three-dimensional rotation to the second device 1810. It may include a motion vector conversion unit 1802 providing the included image processing unit 1811.
  • the second device 1810 can include an image processing unit 1811 and a display 1812 that displays a stabilized 360 degree image rendered by the image processing unit 1811.
  • the second device 1810 may further include an input unit 1813 configured to receive a control input of the imaging device defining the rotation and / or the transformation.
  • Method according to an embodiment of the present invention is implemented in the form of program instructions that can be executed by various computer means may be recorded on a computer readable medium.
  • the computer readable medium may include program instructions, data files, data structures, etc. alone or in combination.
  • Program instructions recorded on the media may be those specially designed and constructed for the purposes of the present invention, or they may be of the kind well-known and available to those having skill in the computer software arts.
  • Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tape, optical media such as CD-ROMs, DVDs, and magnetic disks, such as floppy disks.
  • Examples of program instructions include not only machine code generated by a compiler, but also high-level language code that can be executed by a computer using an interpreter or the like.
  • a device may include a processor, a memory for storing and executing program data, a persistent storage such as a disk drive, a communication port for communicating with an external device, a touch panel, a key, a user interface such as a button, and the like.
  • Methods implemented by software modules or algorithms may be stored on a computer readable recording medium as computer readable codes or program instructions executable on the processor.
  • the computer-readable recording medium may be a magnetic storage medium (eg, read-only memory (ROM), random-access memory (RAM), floppy disk, hard disk, etc.) and an optical reading medium (eg, CD-ROM). ) And DVD (Digital Versatile Disc).
  • the computer readable recording medium can be distributed over network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion.
  • the medium is readable by the computer, stored in the memory, and can be executed by the processor.
  • An embodiment may be represented by functional block configurations and various processing steps. Such functional blocks may be implemented in various numbers of hardware or / and software configurations that perform particular functions.
  • an embodiment may include an integrated circuit configuration such as memory, processing, logic, look-up table, etc. that may execute various functions by the control of one or more microprocessors or other control devices. You can employ them.
  • an embodiment may employ the same or different types of cores, different types of CPUs.
  • Similar to the components in the present invention may be implemented in software programming or software elements, embodiments include C, C ++, including various algorithms implemented in combinations of data structures, processes, routines or other programming constructs. It may be implemented in a programming or scripting language such as Java, an assembler, or the like.
  • the functional aspects may be implemented with an algorithm running on one or more processors.
  • the embodiment may employ the prior art for electronic configuration, signal processing, and / or data processing.
  • Terms such as “mechanism”, “element”, “means”, “configuration” can be used widely and are not limited to mechanical and physical configurations. The term may include the meaning of a series of routines of software in conjunction with a processor or the like.
  • connection or connection members of the lines between the components shown in the drawings by way of example shows a functional connection and / or physical or circuit connections, in the actual device replaceable or additional various functional connections, physical It may be represented as a connection, or circuit connections.
  • such as "essential”, “important” may not be a necessary component for the application of the present invention.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Image Analysis (AREA)

Abstract

Provided is a 360-degree image processing method for: acquiring a plurality of motion vectors for a 360-degree image, determining at least one motion vector, which indicates global rotation of the 360-degree image, among the plurality of motion vectors through filtering; performing three-dimensional-transformation on the determined at least one motion vector so as to acquire three-dimensional rotation information of the 360-degree image, and correcting distortion, of the 360-degree image, caused by shaking on the basis of the acquired three-dimensional rotation information.

Description

360도 영상을 처리하는 방법 및 장치Method and apparatus for processing 360 degree image
본 개시는 360도 영상을 처리하는 방법, 360도 영상을 처리하는 장치 및 360도 영상을 처리하는 방법을 수행하는 프로그램이 기록된 기록매체에 관한 것이다.The present disclosure relates to a recording medium on which a method for processing a 360 degree image, a device for processing a 360 degree image, and a program for processing a 360 degree image are recorded.
영상 처리 기술이 발달함에 따라, 사용자에게 보다 실감나는 영상을 제공하기 위한 기술 중 하나로 360도 영상을 제공하는 방법에 대한 연구가 활발하게 이루어지고 있다. 360도 영상 제공 시, 문제점은 일명 가상 현실(virtual reality, VR) 병으로 이는 사용자가 360도 영상을 시청하는 동안 멀미와 유사한 증상을 느끼는 것이다. VR 병은 사용자가 360도 영상을 시청하는 동안 모순된 감각을 입력 받아 발생할 수 있다. VR 병은 바람직하지 않은 카메라 움직임을 보정하여 영상을 안정화함으로써 완화될 수 있다. As image processing technology is developed, research on a method of providing a 360 degree image as one of technologies for providing a more realistic image to a user is being actively conducted. In providing a 360 degree image, a problem is a so-called virtual reality (VR) disease, in which a user feels motion sickness-like symptoms while watching a 360 degree image. The VR bottle may be generated by receiving contradictory sensations while the user watches a 360 degree image. VR bottles can be alleviated by correcting undesirable camera movements to stabilize the image.
한편, 영상의 안정화는 영상의 사후 처리 단계에서 수행될 수 있으며 대부분의 영상 안정화 기술은 두 가지 별도의 작업을 수행해야 한다. 첫 번째로, 의도하지 않은 카메라의 움직임을 추정된 카메라 궤적으로부터 검출하고 억제하는 작업이 수행되어야 하고, 두 번째로 카메라의 안정된 궤적과 원래의 영상 시퀀스를 사용하여 새로운 영상 시퀀스를 생성하는 작업이 수행되어야 한다. 그러나 보정되지 않은 단일 시점 이미징 시스템에서 카메라 궤적을 추정하기 어렵고, 안정화 된 카메라 뷰에서 새로운 이미지를 생성하는 것 또한 신뢰성 있게 수행되기 어렵다는 점에서, 360도 영상을 안정화시키기 위한 추가적인 연구가 필요한 실정이다. On the other hand, the stabilization of the image can be performed in the post-processing step of the image, most image stabilization technology has to perform two separate tasks. Firstly, the task of detecting and suppressing unintended camera movement from the estimated camera trajectory should be performed, and secondly, generating a new image sequence using the stable trajectory of the camera and the original image sequence. Should be. However, it is difficult to estimate the camera trajectory in the uncorrected single-view imaging system, and generating new images from the stabilized camera view is also difficult to reliably perform. Therefore, further research is required to stabilize the 360 degree image.
개시된 실시예는 360도 영상의 모션 벡터를 회전 정보로 변환하고, 이를 이용하여 360도 영상에 포함된 흔들림으로 인한 왜곡을 보정함으로써 영상을 안정화시킬 수 있는 360도 영상을 처리하는 방법 및 장치를 제공하고자 한다. The disclosed embodiment provides a method and apparatus for processing a 360 degree image capable of stabilizing an image by converting a motion vector of the 360 degree image into rotation information and using the same to correct distortion caused by shaking included in the 360 degree image. I would like to.
일 실시예에 따른 360도 영상을 처리하는 방법은, 360도 영상에 대한 복수의 모션 벡터를 획득하는 단계; 필터링을 통해 복수의 모션 벡터 중 360도 영상의 글로벌 회전을 나타내는 적어도 하나의 모션 벡터를 결정하는 단계; 결정된 적어도 하나의 모션 벡터를 3차원 변환하여, 360도 영상에 대한 3차원 회전 정보를 획득하는 단계; 및 획득된 3차원 회전 정보를 기초로 흔들림으로 인한 360도 영상의 왜곡을 보정하는 단계를 포함할 수 있다.According to one or more exemplary embodiments, a method of processing a 360 degree image may include: obtaining a plurality of motion vectors with respect to the 360 degree image; Determining at least one motion vector representing global rotation of a 360 degree image among the plurality of motion vectors through filtering; Obtaining three-dimensional rotation information of a 360 degree image by three-dimensionally transforming the determined at least one motion vector; And correcting the distortion of the 360 degree image due to the shaking based on the obtained 3D rotation information.
일 실시예에 따른 360도 영상을 처리하는 방법에 있어서, 적어도 하나의 모션 벡터를 결정하는 단계는, 복수의 모션 벡터 중 프로젝션의 종류에 따라 기 결정된 영역에 포함된 모션 벡터를 제거하는 단계를 포함할 수 있다. In the method of processing a 360-degree image according to an embodiment of the present disclosure, the determining of the at least one motion vector includes removing a motion vector included in a predetermined region according to a type of projection among a plurality of motion vectors. can do.
일 실시예에 따른 360도 영상을 처리하는 방법에 있어서, 적어도 하나의 모션 벡터를 결정하는 단계는, 360도 영상으로부터 검출된 에지를 기초로 마스크를 생성하는 단계; 생성된 마스크를 360도 영상에 적용하여, 360도 영상에서 텍스쳐가 존재하지 않는 영역을 결정하는 단계; 및 복수의 모션 벡터 중 텍스쳐가 존재하지 않는 영역에 포함된 모션 벡터를 제거하는 단계를 포함할 수 있다. According to one or more exemplary embodiments, a method of processing a 360 degree image, the determining of at least one motion vector comprises: generating a mask based on an edge detected from the 360 degree image; Determining a region where no texture exists in the 360 degree image by applying the generated mask to the 360 degree image; And removing a motion vector included in a region in which no texture exists among the plurality of motion vectors.
일 실시예에 따른 360도 영상을 처리하는 방법에 있어서, 적어도 하나의 모션 벡터를 결정하는 단계는, 기 설정된 오브젝트 검출 프로세스를 통해 360도 영상으로부터 적어도 하나의 움직이는 오브젝트를 검출하는 단계; 및 복수의 모션 벡터 중 검출된 오브젝트와 연관된 모션 벡터를 제거하는 단계를 포함할 수 있다. A method of processing a 360 degree image according to an embodiment, the determining of the at least one motion vector comprises: detecting at least one moving object from the 360 degree image through a preset object detection process; And removing the motion vector associated with the detected object among the plurality of motion vectors.
일 실시예에 따른 360도 영상을 처리하는 방법에 있어서, 적어도 하나의 모션 벡터를 결정하는 단계는, 복수의 모션 벡터 중 360도 영상이 투영된 단위 구(unitsphere) 상의 반대편에 위치한 모션 벡터가 서로 평행하고, 반대 부호를 가지며, 특정 임계값 내의 크기를 갖는 모션 벡터를 글로벌 회전을 나타내는 모션 벡터로 결정할 수 있다. In the method of processing a 360-degree image according to an embodiment of the present disclosure, the determining of the at least one motion vector may include: motion vectors positioned opposite to each other on a unitsphere from which a 360-degree image is projected from among the plurality of motion vectors A motion vector that is parallel, has the opposite sign, and has a magnitude within a certain threshold may be determined as a motion vector representing global rotation.
일 실시예에 따른 360도 영상을 처리하는 방법에 있어서, 3차원 회전 정보를 획득하는 단계는, 결정된 적어도 하나의 모션 벡터를 특정 방향 및 특정 크기 범위에 대응하는 복수의 빈으로 분류하는 단계; 분류된 복수의 빈 중 가장 많은 모션 벡터를 포함하는 빈을 선택하는 단계; 선택된 빈의 방향 및 거리를 변환하여, 상기 3차원 회전 정보를 획득하는 단계를 포함할 수 있다. In the 360-degree image processing method according to an embodiment, obtaining the three-dimensional rotation information, the step of classifying the determined at least one motion vector into a plurality of bins corresponding to a specific direction and a specific size range; Selecting a bin containing the most motion vectors of the sorted plurality of bins; And converting the direction and the distance of the selected bin to obtain the 3D rotation information.
일 실시예에 따른 360도 영상을 처리하는 방법에 있어서, 3차원 회전 정보를 획득하는 단계는, 선택된 빈과 선택된 빈에 인접한 복수의 빈의 방향 및 거리에 가중 평균을 적용하여, 3차원 회전 정보를 획득할 수 있다. In the method of processing a 360-degree image according to an embodiment of the present disclosure, the obtaining of the 3D rotation information may include applying the weighted average to the directions and distances of the selected bin and a plurality of bins adjacent to the selected bin, and thus the 3D rotation information Can be obtained.
일 실시예에 따른 360도 영상을 처리하는 방법에 있어서, 3차원 회전 정보를 획득하는 단계는, 결정된 적어도 하나의 모션 벡터의 합을 최소화하는 회전 값을 3차원 회전 정보로 획득할 수 있다. In the method of processing a 360-degree image according to an embodiment, the obtaining of the 3D rotation information may obtain, as the 3D rotation information, a rotation value for minimizing the sum of the determined at least one motion vector.
일 실시예에 따른 360도 영상을 처리하는 방법에 있어서, 3차원 회전 정보를 획득하는 단계는, 기 생성된 학습 네트워크 모델을 이용하여, 복수의 모션 벡터를 기초로 3차원 회전 정보를 획득할 수 있다. In the method of processing a 360-degree image according to an embodiment, the obtaining of the 3D rotation information may include obtaining the 3D rotation information based on a plurality of motion vectors using a previously generated learning network model. have.
일 실시예에 따른 360도 영상을 처리하는 방법은, 촬영 장치를 통해 360도 영상의 촬영 시 발생된 흔들림을 센싱한 결과 생성된 센서 데이터를 획득하는 단계를 더 포함하고, 360도 영상의 왜곡을 보정하는 단계는, 획득된 센서 데이터와 상기 3차원 회전 정보를 조합하여, 360도 영상의 왜곡을 보정할 수 있다. According to an embodiment, a method of processing a 360 degree image may further include acquiring sensor data generated as a result of sensing a shake generated when capturing a 360 degree image through a photographing apparatus, and detecting distortion of the 360 degree image. In the correcting, the distortion of the 360 degree image may be corrected by combining the acquired sensor data and the 3D rotation information.
일 실시예에 따른 360도 영상을 처리하는 장치는 하나 이상의 인스트럭션을 저장하는 메모리; 및 메모리에 저장된 하나 이상의 인스트럭션을 실행하는 프로세서를 포함하고, 프로세서는, 360도 영상에 대한 복수의 모션 벡터를 획득하고, 필터링을 통해 상기 복수의 모션 벡터 중 360도 영상의 글로벌 회전을 나타내는 적어도 하나의 모션 벡터를 결정하며, 결정된 적어도 하나의 모션 벡터를 3차원 변환하여, 360도 영상에 대한 3차원 회전 정보를 획득하고, 획득된 3차원 회전 정보를 기초로 흔들림으로 인한 360도 영상의 왜곡을 보정할 수 있다. According to an embodiment, an apparatus for processing a 360 degree image may include a memory configured to store one or more instructions; And a processor that executes one or more instructions stored in a memory, wherein the processor obtains a plurality of motion vectors for the 360 degree image, and filters the at least one representing a global rotation of the 360 degree image among the plurality of motion vectors. Determine a motion vector of the at least one motion vector, and three-dimensionally convert the determined at least one motion vector to obtain three-dimensional rotation information of the 360-degree image, and correct the distortion of the 360-degree image due to shaking based on the obtained three-dimensional rotation information. You can correct it.
도 1은 일 실시예에 따른 360도 영상이 저장되는 포맷을 설명하기 위한 도면이다. 1 is a diagram illustrating a format in which a 360 degree image is stored, according to an exemplary embodiment.
도 2는 일 실시예에 따른 영상 처리 장치가 360도 영상을 처리하는 방법을 설명하기 위한 흐름도이다. 2 is a flowchart illustrating a method of processing a 360-degree image by the image processing apparatus according to an exemplary embodiment.
도 3은 일 실시예에 따른 영상 처리 장치가 360도 영상을 처리하는 방법을 보다 구체적으로 설명하기 위한 흐름도이다. 3 is a flowchart illustrating a method of processing a 360-degree image by the image processing apparatus according to an exemplary embodiment in more detail.
도 4는 일 실시예에 따른 360도 영상에서의 모션 벡터를 설명하기 위한 도면이다.4 is a diagram for describing a motion vector in a 360 degree image, according to an exemplary embodiment.
도 5는 일 실시예에 따른 영상 처리 장치가 필터링을 통해 복수의 모션 벡터를 기 설정된 영역의 모션 벡터를 제거하는 방법을 설명하기 위한 도면이다.5 is a diagram for describing a method of removing, by filtering, a motion vector of a predetermined region from a plurality of motion vectors by an image processing apparatus, according to an exemplary embodiment.
도 6은 일 실시예에 따른 영상 처리 장치가 필터링을 통해 텍스쳐 프리 영역에 포함된 모션 벡터를 제거하는 방법을 설명하기 위한 도면이다. FIG. 6 is a diagram for describing a method of removing, by the image processing apparatus, a motion vector included in a texture free area through filtering, according to an exemplary embodiment.
도 7은 일 실시예에 따른 영상 처리 장치가 필터링을 통해 글로벌 회전이 아닌 것으로 판단되는 모션 벡터를 제거하는 방법을 설명하기 위한 도면이다. FIG. 7 is a diagram for describing a method of removing, by the image processing apparatus, a motion vector determined to not be global rotation through filtering, according to an exemplary embodiment.
도 8은 일 실시예에 따른 영상 처리 장치가 필터링을 통해 글로벌 회전을 나타내는 모션 벡터를 결정하는 방법을 설명하기 위한 흐름도이다. 8 is a flowchart for describing a method of determining, by the image processing apparatus, a motion vector indicating global rotation through filtering, according to an exemplary embodiment.
도 9는 일 실시예에 따른 영상 처리 장치가 모션 벡터를 3차원 회전으로 변환하는 방법을 설명하기 위한 흐름도이다. 9 is a flowchart illustrating a method of converting a motion vector into 3D rotation by an image processing apparatus, according to an exemplary embodiment.
도 10은 일 실시예에 따른 360도 영상의 모션 벡터를 도시한 도면이다. 10 illustrates a motion vector of a 360 degree image, according to an exemplary embodiment.
도 11은 일 실시예에 따른 복수의 모션 벡터를 복수의 빈으로 분류한 결과를 설명하기 위한 표이다. 11 is a table for describing a result of classifying a plurality of motion vectors into a plurality of bins, according to an exemplary embodiment.
도 12는 일 실시예에 따라 도 11에서 분류된 복수의 모션 벡터를 히스토그램으로 표시한 도면이다. 12 illustrates a histogram of a plurality of motion vectors classified in FIG. 11 according to an exemplary embodiment.
도 13은 일 실시예에 따른 영상 처리 장치가 360도 영상에 대해 모션 벡터를 기초로 획득된 회전 정보 및 흔들림에 관한 센싱 데이터를 조합하여 회전 정보를 재결정하는 방법을 설명하기 위한 흐름도이다.FIG. 13 is a flowchart for describing a method of determining, by an image processing apparatus, rotation information obtained by combining a rotation information acquired based on a motion vector and sensing data about shaking for a 360 degree image.
도 14는 일 실시예에 따른 영상 처리 장치의 블록도이다. 14 is a block diagram of an image processing apparatus according to an exemplary embodiment.
도 15는 일 실시예에 따른 적어도 하나의 프로세서를 설명하기 위한 도면이다. 15 is a diagram for describing at least one processor, according to an exemplary embodiment.
도 16은 일 실시예에 따른 데이터 학습부의 블록도이다. 16 is a block diagram of a data learner, according to an exemplary embodiment.
도 17는 일 실시예에 따른 데이터 인식부의 블록도이다.17 is a block diagram of a data recognizer according to an exemplary embodiment.
도 18은 다른 실시예에 따른 영상 처리 장치의 블록도이다. 18 is a block diagram of an image processing apparatus according to another exemplary embodiment.
일 실시예에 따른 360도 영상을 처리하는 방법은, 360도 영상에 대한 복수의 모션 벡터를 획득하는 단계; 필터링을 통해 복수의 모션 벡터 중 360도 영상의 글로벌 회전을 나타내는 적어도 하나의 모션 벡터를 결정하는 단계; 결정된 적어도 하나의 모션 벡터를 3차원 변환하여, 360도 영상에 대한 3차원 회전 정보를 획득하는 단계; 및 획득된 3차원 회전 정보를 기초로 흔들림으로 인한 360도 영상의 왜곡을 보정하는 단계를 포함할 수 있다.According to one or more exemplary embodiments, a method of processing a 360 degree image may include: obtaining a plurality of motion vectors with respect to the 360 degree image; Determining at least one motion vector representing global rotation of a 360 degree image among the plurality of motion vectors through filtering; Obtaining three-dimensional rotation information of a 360 degree image by three-dimensionally transforming the determined at least one motion vector; And correcting the distortion of the 360 degree image due to the shaking based on the obtained 3D rotation information.
일 실시예에 따른 360도 영상을 처리하는 방법에 있어서, 적어도 하나의 모션 벡터를 결정하는 단계는, 복수의 모션 벡터 중 프로젝션의 종류에 따라 기 결정된 영역에 포함된 모션 벡터를 제거하는 단계를 포함할 수 있다. In the method of processing a 360-degree image according to an embodiment of the present disclosure, the determining of the at least one motion vector includes removing a motion vector included in a predetermined region according to a type of projection among a plurality of motion vectors. can do.
일 실시예에 따른 360도 영상을 처리하는 방법에 있어서, 적어도 하나의 모션 벡터를 결정하는 단계는, 360도 영상으로부터 검출된 에지를 기초로 마스크를 생성하는 단계; 생성된 마스크를 360도 영상에 적용하여, 360도 영상에서 텍스쳐가 존재하지 않는 영역을 결정하는 단계; 및 복수의 모션 벡터 중 텍스쳐가 존재하지 않는 영역에 포함된 모션 벡터를 제거하는 단계를 포함할 수 있다. According to one or more exemplary embodiments, a method of processing a 360 degree image, the determining of at least one motion vector comprises: generating a mask based on an edge detected from the 360 degree image; Determining a region where no texture exists in the 360 degree image by applying the generated mask to the 360 degree image; And removing a motion vector included in a region in which no texture exists among the plurality of motion vectors.
일 실시예에 따른 360도 영상을 처리하는 방법에 있어서, 적어도 하나의 모션 벡터를 결정하는 단계는, 기 설정된 오브젝트 검출 프로세스를 통해 360도 영상으로부터 적어도 하나의 움직이는 오브젝트를 검출하는 단계; 및 복수의 모션 벡터 중 검출된 오브젝트와 연관된 모션 벡터를 제거하는 단계를 포함할 수 있다. A method of processing a 360 degree image according to an embodiment, the determining of the at least one motion vector comprises: detecting at least one moving object from the 360 degree image through a preset object detection process; And removing the motion vector associated with the detected object among the plurality of motion vectors.
일 실시예에 따른 360도 영상을 처리하는 방법에 있어서, 적어도 하나의 모션 벡터를 결정하는 단계는, 복수의 모션 벡터 중 360도 영상이 투영된 단위 구(unitsphere) 상의 반대편에 위치한 모션 벡터가 서로 평행하고, 반대 부호를 가지며, 특정 임계값 내의 크기를 갖는 모션 벡터를 글로벌 회전을 나타내는 모션 벡터로 결정할 수 있다. In the method of processing a 360-degree image according to an embodiment of the present disclosure, the determining of the at least one motion vector may include: motion vectors positioned opposite to each other on a unitsphere from which a 360-degree image is projected from among the plurality of motion vectors A motion vector that is parallel, has the opposite sign, and has a magnitude within a certain threshold may be determined as a motion vector representing global rotation.
일 실시예에 따른 360도 영상을 처리하는 방법에 있어서, 3차원 회전 정보를 획득하는 단계는, 결정된 적어도 하나의 모션 벡터를 특정 방향 및 특정 크기 범위에 대응하는 복수의 빈으로 분류하는 단계; 분류된 복수의 빈 중 가장 많은 모션 벡터를 포함하는 빈을 선택하는 단계; 선택된 빈의 방향 및 거리를 변환하여, 상기 3차원 회전 정보를 획득하는 단계를 포함할 수 있다. In the 360-degree image processing method according to an embodiment, obtaining the three-dimensional rotation information, the step of classifying the determined at least one motion vector into a plurality of bins corresponding to a specific direction and a specific size range; Selecting a bin containing the most motion vectors of the sorted plurality of bins; And converting the direction and the distance of the selected bin to obtain the 3D rotation information.
일 실시예에 따른 360도 영상을 처리하는 방법에 있어서, 3차원 회전 정보를 획득하는 단계는, 선택된 빈과 선택된 빈에 인접한 복수의 빈의 방향 및 거리에 가중 평균을 적용하여, 3차원 회전 정보를 획득할 수 있다. In the method of processing a 360-degree image according to an embodiment of the present disclosure, the obtaining of the 3D rotation information may include applying the weighted average to the directions and distances of the selected bin and a plurality of bins adjacent to the selected bin, and thus the 3D rotation information Can be obtained.
일 실시예에 따른 360도 영상을 처리하는 방법에 있어서, 3차원 회전 정보를 획득하는 단계는, 결정된 적어도 하나의 모션 벡터의 합을 최소화하는 회전 값을 3차원 회전 정보로 획득할 수 있다. In the method of processing a 360-degree image according to an embodiment, the obtaining of the 3D rotation information may obtain, as the 3D rotation information, a rotation value for minimizing the sum of the determined at least one motion vector.
일 실시예에 따른 360도 영상을 처리하는 방법에 있어서, 3차원 회전 정보를 획득하는 단계는, 기 생성된 학습 네트워크 모델을 이용하여, 복수의 모션 벡터를 기초로 3차원 회전 정보를 획득할 수 있다. In the method of processing a 360-degree image according to an embodiment, the obtaining of the 3D rotation information may include obtaining the 3D rotation information based on a plurality of motion vectors using a previously generated learning network model. have.
일 실시예에 따른 360도 영상을 처리하는 방법은, 촬영 장치를 통해 360도 영상의 촬영 시 발생된 흔들림을 센싱한 결과 생성된 센서 데이터를 획득하는 단계를 더 포함하고, 360도 영상의 왜곡을 보정하는 단계는, 획득된 센서 데이터와 상기 3차원 회전 정보를 조합하여, 360도 영상의 왜곡을 보정할 수 있다. According to an embodiment, a method of processing a 360 degree image may further include acquiring sensor data generated as a result of sensing a shake generated when capturing a 360 degree image through a photographing apparatus, and detecting distortion of the 360 degree image. In the correcting, the distortion of the 360 degree image may be corrected by combining the acquired sensor data and the 3D rotation information.
일 실시예에 따른 360도 영상을 처리하는 장치는 하나 이상의 인스트럭션을 저장하는 메모리; 및 메모리에 저장된 하나 이상의 인스트럭션을 실행하는 프로세서를 포함하고, 프로세서는, 360도 영상에 대한 복수의 모션 벡터를 획득하고, 필터링을 통해 상기 복수의 모션 벡터 중 360도 영상의 글로벌 회전을 나타내는 적어도 하나의 모션 벡터를 결정하며, 결정된 적어도 하나의 모션 벡터를 3차원 변환하여, 360도 영상에 대한 3차원 회전 정보를 획득하고, 획득된 3차원 회전 정보를 기초로 흔들림으로 인한 360도 영상의 왜곡을 보정할 수 있다. According to an embodiment, an apparatus for processing a 360 degree image may include a memory configured to store one or more instructions; And a processor that executes one or more instructions stored in a memory, wherein the processor obtains a plurality of motion vectors for the 360 degree image, and filters the at least one representing a global rotation of the 360 degree image among the plurality of motion vectors. Determine a motion vector of the at least one motion vector, and three-dimensionally convert the determined at least one motion vector to obtain three-dimensional rotation information of the 360-degree image, and correct the distortion of the 360-degree image due to shaking based on the obtained three-dimensional rotation information. You can correct it.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 본 발명에 대해 구체적으로 설명하기로 한다. Terms used herein will be briefly described and the present invention will be described in detail.
본 발명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다. The terms used in the present invention have been selected as widely used general terms as possible in consideration of the functions in the present invention, but this may vary according to the intention or precedent of the person skilled in the art, the emergence of new technologies and the like. In addition, in certain cases, there is also a term arbitrarily selected by the applicant, in which case the meaning will be described in detail in the description of the invention. Therefore, the terms used in the present invention should be defined based on the meanings of the terms and the contents throughout the present invention, rather than the names of the simple terms.
제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 구성 요소들은 용어들에 의해 한정되지는 않는다. 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 항목들의 조합 또는 복수의 관련된 항목들 중의 어느 하나의 항목을 포함한다.Terms including ordinal numbers such as first and second may be used to describe various components, but the components are not limited by the terms. The terms are only used to distinguish one component from another. For example, without departing from the scope of the present invention, the first component may be referred to as the second component, and similarly, the second component may also be referred to as the first component. The term and / or includes any one of a plurality of related items or a combination of a plurality of related items.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에서 사용되는 "부"라는 용어는 소프트웨어, FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)과 같은 하드웨어 구성요소를 의미하며, "부"는 어떤 역할들을 수행한다. 그렇지만 "부"는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. "부"는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 "부"는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 특성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다. 구성요소들과 "부"들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 "부"들로 결합되거나 추가적인 구성요소들과 "부"들로 더 분리될 수 있다.When any part of the specification is to "include" any component, this means that it may further include other components, except to exclude other components unless otherwise stated. In addition, the term "part" as used herein refers to a hardware component such as software, a field programmable gate array (FPGA), or an application specific integrated circuit (ASIC), and the "part" performs certain roles. However, "part" is not meant to be limited to software or hardware. The “unit” may be configured to be in an addressable storage medium and may be configured to play one or more processors. Thus, as an example, a "part" refers to components such as software components, object-oriented software components, class components, and task components, processes, functions, properties, procedures, Subroutines, segments of program code, drivers, firmware, microcode, circuits, data, databases, data structures, tables, arrays and variables. The functionality provided within the components and "parts" may be combined into a smaller number of components and "parts" or further separated into additional components and "parts".
아래에서는 첨부한 도면을 참고하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.DETAILED DESCRIPTION Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those skilled in the art may easily implement the present invention. As those skilled in the art would realize, the described embodiments may be modified in various different ways, all without departing from the spirit or scope of the present invention. In the drawings, parts irrelevant to the description are omitted in order to clearly describe the present invention, and like reference numerals designate like parts throughout the specification.
도 1은 일 실시예에 따른 360도 영상이 저장되는 포맷을 설명하기 위한 도면이다. 1 is a diagram illustrating a format in which a 360 degree image is stored, according to an exemplary embodiment.
도 1을 참조하면, 360도 영상은 다양한 포맷으로 저장될 수 있다. 예를 들어, 단위 구체 표현(unitsphere representation)에 따르면, 360도 영상의 프레임을 구성하는 픽셀들은 가상 구(virtual sphere, 110)의 표면상의 각 픽셀의 위치를 정의하는 3차원 좌표 시스템에서 인덱싱 될 수 있다. Referring to FIG. 1, a 360 degree image may be stored in various formats. For example, according to a unitsphere representation, the pixels that make up the frame of a 360 degree image can be indexed in a three-dimensional coordinate system that defines the location of each pixel on the surface of the virtual sphere 110. have.
다만, 이는 일 예일 뿐, 다른 예에 따라 큐브 맵 프로젝션(cube map projection, 120) 또는 등변 직사각형 프로젝션(equirectangular projection, 130)과 같은 등가의 2차원 표현이 사용될 수도 있다. 큐브 맵 프로젝션(120)에서, 가상 큐브의 각 면에 대한 영상 데이터는 90 ° × 90 ° 시야에 걸친 2 차원 이미지로서 저장될 수 있다. 또한, 등변 직사각형 프로젝션(130)에서, 영상 데이터는 360 ° × 180 ° 시야에 걸친 단일 2 차원 이미지로서 저장될 수 있다. However, this is merely an example, and equivalent two-dimensional representations such as cube map projection 120 or equilateral rectangular projection 130 may be used according to another example. In cube map projection 120, image data for each face of the virtual cube may be stored as a two-dimensional image over a 90 ° × 90 ° field of view. In addition, in equilateral rectangular projection 130, image data may be stored as a single two-dimensional image over a 360 ° × 180 ° field of view.
한편, 도 1에서 '상부', '하부', '전면', '후면', '좌측' 및 '우측'이라는 라벨은 전술한 등가의(equivalent) 프로젝션에서 각각 대응되는 360도 영상의 영역을 나타낸다. 다만, 도 1에 도시된 포맷들은 일 예일 뿐, 다른 실시예에 따라 360도 영상은 도 1에 도시된 포맷과 상이한 포맷으로 저장될 수 있다.Meanwhile, in FIG. 1, the labels 'top', 'bottom', 'front', 'back', 'left' and 'right' indicate areas of 360-degree images respectively corresponding to the equivalent projection described above. . However, the formats shown in FIG. 1 are just examples, and according to another exemplary embodiment, the 360 degree image may be stored in a format different from the format shown in FIG. 1.
도 2는 일 실시예에 따른 영상 처리 장치가 360도 영상을 처리하는 방법을 설명하기 위한 흐름도이다. 2 is a flowchart illustrating a method of processing a 360-degree image by the image processing apparatus according to an exemplary embodiment.
단계 S210에서, 영상 처리 장치는 360도 영상에 대한 복수의 모션 벡터를 획득할 수 있다. 일 실시예에 따른, 360도 영상에 대한 2차원 영상 데이터에서의 모션 벡터의 예는 도 4에 도시되어 있다. In operation S210, the image processing apparatus may acquire a plurality of motion vectors for the 360 degree image. According to one embodiment, an example of a motion vector in two-dimensional image data for a 360 degree image is shown in FIG. 4.
도 4는 일 실시예에 따른 360도 영상에서의 모션 벡터를 설명하기 위한 도면이다. 4 is a diagram for describing a motion vector in a 360 degree image, according to an exemplary embodiment.
모션 벡터는 레퍼런스 프레임(401)과 현재 프레임(402) 사이의 이미지의 소정의 영역(411)의 이동(displacement)을 설명하는 정보이다. 본 실시예에서는, 영상의 직전 프레임이 레퍼런스 프레임(401)으로서 선택되지만, 다른 실시예에서는 연속적이지 않은 프레임을 레퍼런스 프레임으로 사용하여 모션 벡터를 계산할 수도 있다. 본 실시예에서는 360도 영상의 프레임의 넓은 시야를 최대한 활용하기 위해, 프레임 전체에 걸쳐 균일하게 분포된 지점에서 모션 벡터가 획득될 수 있다.The motion vector is information describing the displacement of a predetermined area 411 of the image between the reference frame 401 and the current frame 402. In the present embodiment, the frame immediately before the image is selected as the reference frame 401, but in another embodiment, the motion vector may be calculated using the non-contiguous frame as the reference frame. In the present embodiment, to maximize the wide field of view of the frame of the 360-degree image, the motion vector may be obtained at a point uniformly distributed throughout the frame.
한편, 도 4에서는 2 차원 모션 벡터 V가 도시되어 있지만, 다른 실시예에따라, 복수의 3 차원 모션 벡터가 획득될 수 있다. 예를 들어, 현재 프레임에 대한 영상 데이터가 도 1에 도시 된 단위 구 표현을 사용하여 저장되는 경우, 3차원 모션 벡터가 획득될 수 있다.Meanwhile, although the 2D motion vector V is illustrated in FIG. 4, according to another embodiment, a plurality of 3D motion vectors may be obtained. For example, when image data for the current frame is stored using the unit sphere representation shown in FIG. 1, a 3D motion vector may be obtained.
본 실시예에서 획득된 복수의 모션 벡터는 360도 영상의 프레임의 영상 데이터를 인코딩하는 동안 이전에 생성된 모션 벡터이다. 모션 벡터는 MPEG 4.2 또는 H.264 인코딩과 같은 기존 영상 인코딩 프로세스에서 일반적으로 생성되고 저장될 수 있다. 영상의 인코딩 동안, 모션 벡터는 다음 프레임을 그리기(draw) 위해 이전 프레임의 블록을 재사용함으로써 영상 데이터를 압축하는 데 사용될 수 있다. 모션 벡터를 생성하는 방법에 대한 구체적인 설명은 생략하도록 한다. The plurality of motion vectors obtained in this embodiment are motion vectors previously generated while encoding the image data of the frame of the 360 degree image. Motion vectors can generally be generated and stored in existing video encoding processes such as MPEG 4.2 or H.264 encoding. During encoding of the image, the motion vector can be used to compress the image data by reusing the blocks of the previous frame to draw the next frame. A detailed description of the method for generating the motion vector will be omitted.
한편, 이전에 생성된 모션 벡터는 저장된 360도 영상 파일로부터 검색될 수 있다. 이러한 방식으로 모션 벡터를 재사용하면 전체 처리 부담이 줄어들 수 있다. 다른 실시예에 따라, 360도 영상 파일이 모션 벡터를 포함하지 않는 경우, 모션 벡터는 단계 S210에서 생성될 수 있다.Meanwhile, the previously generated motion vector may be retrieved from the stored 360 degree image file. Reusing motion vectors in this way can reduce the overall processing burden. According to another embodiment, when the 360 degree image file does not include a motion vector, the motion vector may be generated in step S210.
단계 S220에서, 영상 처리 장치는 필터링을 통해 복수의 모션 벡터 중 360도 영상의 글로벌 회전을 나타내는 적어도 하나의 모션 벡터를 결정할 수 있다. In operation S220, the image processing apparatus may determine at least one motion vector indicating global rotation of the 360 degree image among the plurality of motion vectors through filtering.
여기에서 '글로벌 회전'이란 영상의 일부에만 영향을 주는 로컬 회전과 달리 프레임 전체에서 영상에 영향을 주는 회전을 의미한다. 글로벌 회전은 영상이 캡쳐되는 동안 카메라가 회전된 결과이거나 동일한 방식으로 프레임 내의 큰 부분이 카메라 주위를 이동한 결과일 수 있다. 예를 들어, 움직이는 차량에서 360도 영상을 촬영하는 경우 차량의 회전으로 인해 백그라운드에서 글로벌 회전이 발생할 수 있으며 카메라 자체의 회전으로 인해 백그라운드 및 포어 그라운드에서 보이는 차량의 모든 부분에서 글로벌 회전이 발생할 수 있다. 회전은 프레임의 상당 부분에 영향을 줄 때 '글로벌 회전'으로 간주될 수 있다.Here, 'global rotation' refers to a rotation that affects the image throughout the frame, unlike a local rotation that affects only part of the image. Global rotation can be the result of the camera being rotated while the image is being captured, or a large portion of the frame moving around the camera in the same way. For example, if a 360-degree image is taken from a moving vehicle, the rotation of the vehicle can cause global rotation in the background, and the rotation of the camera itself can cause global rotation in all parts of the vehicle visible in the background and foreground. . Rotation can be regarded as 'global rotation' when it affects a significant portion of the frame.
글로벌 회전을 나타내지 않는 모션 벡터의 예로는 장면에서 상대적으로 더 작은 움직임의 물체와 연관된 모션 벡터 또는 카메라를 기준으로 고정됨에 따라 카메라가 회전할 때 회전하지 않는 것으로 보이는 정적 물체와 연관된 모션 벡터가 포함될 수 있다. Examples of motion vectors that do not represent global rotation may include motion vectors associated with objects of relatively smaller movement in the scene, or motion vectors associated with static objects that do not appear to rotate when the camera rotates as they are fixed relative to the camera. have.
일 실시예에 따른 영상 처리 장치는 필터링을 수행하여 복수의 모션 벡터 중 기 결정된 영역에 포함된 모션 벡터를 제거할 수 있다. 이에 대해서는 도 5를 참조하여 보다 구체적으로 후술하도록 한다. The image processing apparatus according to an embodiment may perform filtering to remove a motion vector included in a predetermined region among the plurality of motion vectors. This will be described later in more detail with reference to FIG. 5.
또한, 다른 실시예에 따른 영상 처리 장치는 필터링을 수행하여 360도 영상으로부터 검출된 에지를 기초로 마스크를 생성하고, 생성된 마스크를 360도 영상에 적용하여 360도 영상에서 텍스쳐 프리(texture-free) 영역에 포함된 모션 벡터를 제거할 수 있다. 이에 대해서는 도 6을 참조하여 보다 구체적으로 후술하도록 한다.Also, the image processing apparatus according to another embodiment may perform filtering to generate a mask based on edges detected from the 360 degree image, and apply the generated mask to the 360 degree image to texture-free the 360 degree image. ) Motion vectors included in the region can be removed. This will be described later in more detail with reference to FIG. 6.
또 다른 실시예에 따른 영상 처리 장치는 필터링을 수행하여 360도 영상에서 움직이는 오브젝트와 연관된 모션 벡터를 제거할 수 있다. According to another exemplary embodiment, the image processing apparatus may perform filtering to remove a motion vector associated with a moving object in a 360 degree image.
또 다른 실시예에 따른 영상 처리 장치는 단위 구 상의 반대편에 위치한 모션 벡터가 특정 조건을 만족하는지 여부를 판단하여, 해당 모션 벡터가 글로벌 회전을 나타내는지 여부를 판단하여 필터링을 수행할 수 있다. 이에 대해서는 도 7을 참조하여 보다 구체적으로 후술하도록 한다.The image processing apparatus according to another embodiment may determine whether a motion vector located on the opposite side of the unit sphere satisfies a specific condition, and determine whether the motion vector indicates global rotation to perform filtering. This will be described later in more detail with reference to FIG. 7.
한편, 영상 처리 장치는 전술한 필터링 방법들 중 2개 이상을 조합하여, 복수의 모션 벡터 중 글로벌 회전을 나타내지 않는 모션 벡터를 제거할 수 있다.또한, 전술한 예시들은 모션 벡터를 필터링하는 방법의 일 예일 뿐, 다른 필터링방법이 사용될 수도 있다. 모션 벡터가 필터링 될 수 있는 다른 실시예는 정적 오브젝트 필터링, 백그라운드 플로우 서브트랙션(background flow subtraction)및 매뉴얼 필터링이 포함될 수 있으나, 이에 한정되지는 않는다. 정적 오브젝트 필터링에서는 한 프레임에서 다음 프레임으로 위치를 변경하지 않는 정적 오브젝트가 검출될 수 있으며, 정적 오브젝트와 연관된 모션 벡터가 필터링 될 수 있다. 360도 영상에서 발생할 수 있는 정적 오브젝트 유형의 예로는 렌즈의 검정색 픽셀 또는 카메라 앞에 있는 사용자의 손가락 등이 있다. Meanwhile, the image processing apparatus may combine two or more of the above-described filtering methods to remove a motion vector that does not represent global rotation among the plurality of motion vectors. As an example, other filtering methods may be used. Other embodiments in which the motion vector may be filtered may include, but are not limited to, static object filtering, background flow subtraction, and manual filtering. In static object filtering, static objects that do not change their position from one frame to the next may be detected, and motion vectors associated with the static objects may be filtered. Examples of static object types that can occur in 360-degree images include black pixels on the lens or the user's finger in front of the camera.
백그라운드 플로우 서브트랙션에서, 전체 영상에서 일정한 비율로 움직이는 백그라운드 픽셀들은 안정화 회전을 산출하기 위한 유용한 정보를 포함하지 않는 것으로 가정하여, 제외될 수 있다. 매뉴얼 필터링은 수동으로 모션 벡터를 필터링하는 작업자(human operator)를 포함할 수 있다.In the background flow subtraction, background pixels moving at a constant rate in the entire image may be excluded, assuming that they do not contain useful information for calculating the stabilization rotation. Manual filtering may include a human operator that manually filters the motion vector.
단계 S230에서, 영상 처리 장치는 결정된 적어도 하나의 모션 벡터를 3차원 변환하여 360도 영상에 대한 3차원 회전 정보를 획득할 수 있다.  In operation S230, the image processing apparatus may obtain 3D rotation information about the 360 degree image by 3D transforming the determined at least one motion vector.
일 실시예에 따른 영상 처리 장치는 결정된 적어도 하나의 모션 벡터를 특정 방향 및 특정 크기 범위에 대응하는 복수의 빈으로 분류할 수 있다. 영상 처리 장치는 분류된 복수의 빈 중 가장 많은 모션 벡터를 포함하는 빈의 방향 및 거리를 변환하여, 3차원 회전 정보를 획득할 수 있다. 다만, 이는 일 예일 뿐, 다른 예에 따라 영상 처리 장치는 가장 많은 모션 벡터를 포함하는 빈과 해당 빈에 인접한 복수의 빈의 방향 및 거리에 가중 평균을 적용하여, 3차원 회전 정보를 획득할 수도 있다. The image processing apparatus according to an embodiment may classify the determined at least one motion vector into a plurality of bins corresponding to a specific direction and a specific size range. The image processing apparatus may obtain the 3D rotation information by converting the direction and the distance of the bin including the most motion vectors among the plurality of classified bins. However, this is merely an example, and according to another example, the image processing apparatus may obtain the 3D rotation information by applying a weighted average to the directions and distances of the bin including the most motion vectors and the plurality of bins adjacent to the bin. have.
다른 실시예에 따른 영상 처리 장치는 결정된 적어도 하나의 모션 벡터의 합을 최소화하는 회전 값을 3차원 회전 정보로 획득할 수도 있다. The image processing apparatus according to another exemplary embodiment may obtain, as 3D rotation information, a rotation value for minimizing the sum of the determined at least one motion vector.
또 다른 실시예에 따른 영상 처리 장치는 기 생성된 학습 네트워크 모델을 이용하여, 복수의 모션 벡터를 기초로 3차원 회전 정보를 획득할 수 있다. According to another exemplary embodiment, the image processing apparatus may obtain 3D rotation information based on a plurality of motion vectors using a previously generated learning network model.
예를 들어, 인간은 몸이 회전하는 경우, 환경에 대한 움직임에 의해 발생하는 이미지 쉬프트(움직임 벡터와 유사한)를 분석함으로써, 그들의 눈의 레벨을 유지하면서 시선을 안정화할 수 있다. 이와 유사 행동은 상대적으로 적은 수의 뉴런을 가지고 있는 파리와 같은 더 단순한 표본에서도 관찰될 수 있다. For example, humans can stabilize their gaze while maintaining their eye level by analyzing image shifts (similar to motion vectors) caused by movement to the environment as the body rotates. Similar behavior can be observed in simpler samples, such as flies, with relatively few neurons.
뉴런은 감각 정보를 그들의 모터 시스템 요구 사항에 대응되는 포맷으로 변환할 수 있다. 따라서, AI(Artificial Intelligence) 기반의 실시 예에서, 살아있는 것들의 행동을 모방하고, 입력 데이터로서 모션 벡터를 이용하여 센서 회전 변환을 획득하는데 머신 러닝 메커니즘이 사용될 수 있다. 또한, AI 기반의 실시 예에서는, 특정 회전을 갖는 프레임에서의 모션 벡터의 패턴이 트레이닝된 학습 네트워크 모델과 같은 머신 러닝 시스템이 사용될 수 있다. 이러한 메커니즘은 살아있는 존재를 모방하는 경향이 있고, 복수의 모션 벡터를 입력으로 수신하여, 360도 영상을 안정화하기 위한 전체 회전(overall rotation)을 출력할 수 있다. Neurons can convert sensory information into a format corresponding to their motor system requirements. Thus, in an AI-based embodiment, a machine learning mechanism may be used to mimic the behavior of living things and to obtain sensor rotational transformations using motion vectors as input data. In addition, in an AI based embodiment, a machine learning system may be used, such as a learning network model trained with a pattern of motion vectors in a frame having a particular rotation. Such mechanisms tend to mimic living beings and may receive a plurality of motion vectors as inputs and output an overall rotation for stabilizing a 360 degree image.
단계 S240에서, 영상 처리 장치는 획득된 3차원 회전 정보를 기초로 흔들림으로 인한 360도 영상의 왜곡을 보정할 수 있다. In operation S240, the image processing apparatus may correct the distortion of the 360 degree image due to the shaking based on the obtained 3D rotation information.
일 실시예에 따른 영상 처리 장치는 3차원 회전 정보에 따라 360도 영상을 회전시킴으로써 흔들림으로 인한 360도 영상의 왜곡을 보정할 수 있다. 또한, 영상 처리 장치는 보정된 360도 영상을 렌더링하여 표시하거나, 이후의 재생을 위해 이를 인코딩하여 저장할 수 있다.The image processing apparatus according to the exemplary embodiment may correct the distortion of the 360 degree image due to the shaking by rotating the 360 degree image according to the 3D rotation information. In addition, the image processing apparatus may render and display the corrected 360-degree image, or encode and store it for later playback.
도 3은 일 실시예에 따른 영상 처리 장치가 360도 영상을 처리하는 방법을 보다 구체적으로 설명하기 위한 흐름도이다. 3 is a flowchart illustrating a method of processing a 360-degree image by the image processing apparatus according to an exemplary embodiment in more detail.
실시 예에 따라, 도 3에 개시된 방법의 모든 단계들은 동일한 장치에서 수행될 수도 있고, 각각의 단계들이 상이한 장치들에서 수행될 수도 있다. 도 3에 도시된 임의의 단계는 실시 예에 따라 소프트웨어 또는 하드웨어로 수행될 수 있다. 하나 이상의 단계가 소프트웨어에서 수행되는 경우, 도 3에 개시된 방법을 수행하기 위한 장치는 하나 이상의 프로세서를 포함하는 프로세싱 유닛과, 프로세싱 유닛에 의해 해당 방법을 수행하도록 실행 가능한 컴퓨터 프로그램 명령을 저장한 컴퓨터 판독 가능 메모리를 포함할 수 있다.According to an embodiment, all the steps of the method disclosed in FIG. 3 may be performed in the same apparatus, and each of the steps may be performed in different apparatuses. 3 may be performed by software or hardware according to an embodiment. When one or more steps are performed in software, an apparatus for performing the method disclosed in FIG. 3 includes a processing unit comprising one or more processors, and a computer reading storing computer program instructions executable by the processing unit to perform the method. Possible memory may be included.
단계 S310에서, 영상 처리 장치는 360도 영상의 현재 프레임에 대한 복수의 모션 벡터를 획득할 수 있다. In operation S310, the image processing apparatus may acquire a plurality of motion vectors for the current frame of the 360 degree image.
일 실시예에 따른 영상 처리 장치는 저장된 360도 영상 파일로부터 모션벡터를 검색하거나, 프레임 전체에 걸쳐 균일하게 분포된 지점에서 모션 벡터를 생성함으로써 복수의 모션 벡터를 획득할 수 있다. The image processing apparatus according to an embodiment may obtain a plurality of motion vectors by searching for a motion vector from a stored 360 degree image file or generating a motion vector at a point uniformly distributed throughout the frame.
한편, 단계 S310은 도 2를 참조하여 전술한 단계 S210과 대응될 수 있다. Meanwhile, step S310 may correspond to step S210 described above with reference to FIG. 2.
단계 S320에서, 영상 처리 장치는 복수의 모션 벡터에 필터링을 수행할 수 있다. 특히, 단계 S320에서는 360도 영상의 글로벌 회전을 나타내지 않는 모션 벡터가 제거될 수 있도록 모션 벡터가 필터링 될 수 있다. In operation S320, the image processing apparatus may perform filtering on the plurality of motion vectors. In particular, in operation S320, the motion vector may be filtered to remove a motion vector that does not represent global rotation of the 360 degree image.
예를 들어, 영상 처리 장치는 필터링을 통해, 프레임에서 상대적으로 더 작은 움직임의 물체와 연관된 모션 벡터 또는 카메라를 기준으로 고정됨에 따라 카메라가 회전할 때 회전하지 않는 것으로 보이는 정적 물체와 연관된 모션 벡터를 제거할 수 있다. 모션 벡터를 필터링하는 다양한 방법의 예는 이후에 도 5 내지 도 7을 참조하여 보다 구체적으로 설명하도록 한다. For example, the image processing device may filter to detect a motion vector associated with an object of relatively smaller movement in a frame or a motion vector associated with a static object that does not appear to rotate when the camera rotates as it is fixed relative to the camera. Can be removed Examples of various methods of filtering the motion vectors will be described in more detail later with reference to FIGS. 5 to 7.
한편, 다른 실시예에 따라, 모션 벡터는 필터링되지 않을 수 있으며, 이 경우 단계 S320은 생략될 수 있다.Meanwhile, according to another embodiment, the motion vector may not be filtered, in which case step S320 may be omitted.
단계 S330에서, 영상 처리 장치는 모션 벡터를 3D(dimensional) 회전으로 변환할 수 있다. In operation S330, the image processing apparatus may convert the motion vector into 3D rotation.
일 실시예에 따른 영상 처리 장치는 복수의 모션 벡터를 필터링하여, 글로벌 회전을 나타내지 않는 모션 벡터를 제거한 후, 남아있는(remaining) 모션 벡터는 360도 영상을 안정화하기 위해 현재 프레임에 적용될 수 있는 3 차원 회전으로 변환될 수 있다. According to an embodiment, the image processing apparatus filters a plurality of motion vectors to remove motion vectors that do not represent global rotation, and then the remaining motion vectors may be applied to the current frame to stabilize the 360 degree image. Can be converted to dimensional rotation.
예를 들어, 360도 영상은 등변 직사각형 프로젝션을 통해 2 차원의 영상 데이터로서 저장되고, 모션 벡터를 3 차원 회전으로 변환하기 위해 기-정의된 변환이 사용될 수 있다. 기-정의된 변환은 2 차원 프로젝션의 기하학에 기초하여 미리 정의될 수 있다. 본 실시예에서는, 다음의 수학식 1에 따른 변환이 사용될 수 있다.For example, a 360 degree image is stored as two-dimensional image data via equilateral rectangular projection, and a pre-defined transform can be used to convert the motion vector into three-dimensional rotation. Pre-defined transformations may be predefined based on the geometry of the two-dimensional projection. In this embodiment, a transform according to the following equation (1) can be used.
[수학식 1][Equation 1]
Figure PCTKR2018005440-appb-I000001
Figure PCTKR2018005440-appb-I000001
Figure PCTKR2018005440-appb-I000002
Figure PCTKR2018005440-appb-I000002
Figure PCTKR2018005440-appb-I000003
Figure PCTKR2018005440-appb-I000003
상기의 수학식 1에서, Rx, Ry 및 Rz는 각각 x, y 및 z 축에 대한 도 단위의 회전을 나타내며, width는 픽셀 단위의 시야(field of view)의 전체 폭을 나타내며, height는 픽셀 단위의 시야(field of view)의 전체 높이를 나타내며, 모션 벡터 v는 예를 들어, x축 방향으로 13픽셀 변환 및 y축 방향으로 8 픽셀 변환을 나타내는 (13, 8)로 표현될 수 있다. 본 실시예에서, 가로 방향의 프레임 폭은 36 픽셀이고, 픽셀 당 10 °에 해당하는 것으로 가정한다. In Equation 1, Rx, Ry, and Rz represent rotations in degrees about the x, y, and z axes, respectively, width represents the total width of the field of view in pixels, and height is the pixels. Represents the total height of the field of view, and the motion vector v can be expressed as (13, 8), for example, representing 13 pixels in the x-axis and 8 pixels in the y-axis. In this embodiment, it is assumed that the frame width in the horizontal direction is 36 pixels, which corresponds to 10 ° per pixel.
따라서 상기의 수학식 1을 사용하면 모션 벡터의 수평 성분을 (360/36) * 13 = 130 도의 z 축을 중심으로 등가의 회전으로 변환 할 수 있다. 또한, 모션 벡터의 수직 성분은 프레임에서의 모션 벡터의 위치에 따라 x축 또는 y 축을 중심으로 등가 회전으로 변환될 수 있다.Therefore, using Equation 1 above, the horizontal component of the motion vector can be converted into equivalent rotation about the z axis of (360/36) * 13 = 130 degrees. In addition, the vertical component of the motion vector may be converted into equivalent rotation about the x or y axis depending on the position of the motion vector in the frame.
360도 영상을 안정화하는데 필요한 전체 회전(overall rotation)은 3 차원 회전, 즉 3 차원 공간에서의 회전으로 표현될 수 있다. 회전은 서로 수직인 축들, 예를 들어 도 1에 도시된 바와 같이 x, y 및 z 축과 같은 3 개의 분리된 회전 성분에 의해 표현될 수 있다. 단계 S330에서 획득된 회전은 카메라 흔들림을 효과적으로 보정하여 360도 영상을 안정화시킬 수 있음에 따라 안정화 회전(stabilising rotation)으로 지칭될 수 있다. The overall rotation required to stabilize the 360 degree image can be expressed as a three-dimensional rotation, that is, a rotation in three-dimensional space. Rotation can be represented by three separate rotational components, such as axes perpendicular to one another, for example the x, y and z axes as shown in FIG. The rotation obtained in step S330 may be referred to as stabilizing rotation as the camera shake may be effectively corrected to stabilize the 360 degree image.
360도 영상을 안정화하기 위해 적용되는 전체 회전(overall rotation)은 다양한 방법으로 결정될 수 있다. 예를 들어, 각각의 모션 벡터는 상술한 바와 같이 등가의 회전으로 변환 될 수 있고, 전체 프레임에 걸친 평균 회전(예를 들어, 평균 또는 모드)이 전체 회전으로 간주될 수 있다. 일부 실시 예에서, 가우스 또는 메디안(median) 필터가 평균 또는 모드 값 주위의 이웃하는 값을 고려하여 평균을 취할 때 사용될 수도 있다. 또한, 다른 실시예에 따라, 평균 모션 벡터가 전체 프레임에 대해 계산될 수 있고, 평균 모션 벡터는 미리 정의된 변환을 사용하여 전체 회전으로 변환될 수 있다.The overall rotation applied to stabilize the 360 degree image can be determined in various ways. For example, each motion vector may be converted to equivalent rotation as described above, and the average rotation (eg, average or mode) over the entire frame may be considered a full rotation. In some embodiments, a Gaussian or median filter may be used when taking the average in consideration of neighboring values around the average or mode value. Also, according to another embodiment, the average motion vector can be calculated for the entire frame, and the average motion vector can be transformed to full rotation using a predefined transformation.
한편, 전술한 수학식 1은 다른 실시예에서 필요에 따라 수정될 수 있다. 예를 들어, 360도 영상이 단위 구 표현과 같은 3차원 포맷으로 저장되는 경우, 전술한 수학식 1은 수정될 수 있다. Meanwhile, Equation 1 described above may be modified as needed in other embodiments. For example, when the 360 degree image is stored in a 3D format such as a unit sphere representation, Equation 1 described above may be modified.
단계 S340에서, 영상 처리 장치는 안정화된 영상을 생성하기 위해 영상 프로세싱 유닛에 3D 회전을 제공할 수 있다. In operation S340, the image processing apparatus may provide 3D rotation to the image processing unit to generate a stabilized image.
단계 S350에서, 영상 처리 장치는 현재 프레임의 영상 데이터에 3D 회전을 적용하여 안정화된 영상을 생성할 수 있다. In operation S350, the image processing apparatus may generate a stabilized image by applying 3D rotation to image data of the current frame.
또한, 영상 처리 장치는 안정화된 영상을 렌더링하여 표시하거나, 이후의 재생을 위해 이를 인코딩하여 저장할 수 있다. 일부 실시 예에서, 안정화된 영상은 프레임 간 압축을 사용하여 인코딩 될 수 있다. 이러한 실시 예에서, 안정화된영상 데이터에 적용된 회전에 기초하여 보다 효과적인 압축이 달성될 수 있다. 전술한 영상 안정화 프로세스는 연속적인 두 프레임의 영상 데이터 간의 차이를 최소화하는 방식으로 원본 360도 영상의 프레임들을 수정하는 것으로, 이로 인하여 인코더가 이전 프레임들로부터 보다 많은 정보를 재사용할 수 있어, 인터프레임 압축을 수행하는 경우, 더 낮은 비트레이트를 사용할 수 있다. 그 결과, 생성되는 키 프레임들의 양이 줄어들 수 있고, 이에 따라 압축률이 향상될 수 있다. In addition, the image processing apparatus may render and display the stabilized image or encode and store it for later playback. In some embodiments, the stabilized image may be encoded using interframe compression. In this embodiment, more effective compression may be achieved based on the rotation applied to the stabilized image data. The image stabilization process described above modifies the frames of the original 360-degree image in a way that minimizes the difference between two consecutive frames of image data, which allows the encoder to reuse more information from previous frames, thereby interframe When performing compression, lower bit rates can be used. As a result, the amount of key frames generated can be reduced, and thus the compression rate can be improved.
한편, 다른 실시예에 따라, 제 1 영상 처리 장치에서 영상을 안정화하기 위한 회전을 결정하기 위한 분석이 수행될 수 있고, 안정화된 영상을 생성하는 단계 S350은 제 1 영상 처리 장치와 물리적으로 분리된 제 2 영상 처리 장치에 의해 수행될 수 있다. 예를 들어, 일부 실시예에서, 제 1 영상 처리 장치는 360도 영상과 연관된 메타데이터 내의 3D 회전 파라미터의 값을 결정된 회전에 따라 설정할 수 있다. Meanwhile, according to another exemplary embodiment, an analysis for determining a rotation for stabilizing an image may be performed in the first image processing apparatus, and the generating of the stabilized image may be performed by physically separating the first image processing apparatus from the first image processing apparatus. It may be performed by the second image processing apparatus. For example, in some embodiments, the first image processing apparatus may set the value of the 3D rotation parameter in the metadata associated with the 360 degree image according to the determined rotation.
제 1 영상 처리 장치는 단계 S340에서, 예를 들어, 브로드캐스트 신호 또는 네트워크 연결과 같은 적절한 메커니즘을 통해 메타데이터 및 연관된 영상 데이터를 제 2 영상 처리 장치에 제공할 수 있다. 제 2 영상 처리 장치는 회전을 결정하기 위해 메타데이터로부터 3차원 회전 파라미터의 값을 획득할 수 있다. 이 후, 제 2 영상 처리 장치는 단계 S350에서, 3D 회전 파라미터에 의해 정의된 회전을 360도 영상에 적용함으로써, 안정화된 360도 영상을 생성할 수 있다. 또한, 일부 실시예에 따른 제 2 영상 처리 장치는 회전된 영상 데이터를 렌더링하기 전에 카메라 제어 입력에 의해 정의된 회전 및/또는 변환(translation)을 회전된 영상 데이터에 적용함으로써, 안정화된 360도 영상을 생성할 수 있다. In operation S340, the first image processing apparatus may provide metadata and associated image data to the second image processing apparatus through an appropriate mechanism such as a broadcast signal or a network connection. The second image processing apparatus may obtain a value of the 3D rotation parameter from the metadata to determine the rotation. Thereafter, in operation S350, the second image processing apparatus may generate the stabilized 360 degree image by applying the rotation defined by the 3D rotation parameter to the 360 degree image. In addition, the second image processing apparatus according to the exemplary embodiment applies a rotation and / or translation defined by the camera control input to the rotated image data before rendering the rotated image data, thereby stabilizing the 360 degree image. Can be generated.
도 5는 일 실시예에 따른 영상 처리 장치가 필터링을 통해 복수의 모션 벡터를 기 설정된 영역의 모션 벡터를 제거하는 방법을 설명하기 위한 도면이다.5 is a diagram for describing a method of removing, by filtering, a motion vector of a predetermined region from a plurality of motion vectors by an image processing apparatus, according to an exemplary embodiment.
도 5를 참조하면, 등변 직사각형 프로젝션에서는 상부 영역(511)과 하부 영역(512)의 거리가 과장되는 경향이 있어, 등변 직사각형 프로젝션이 사용되는 경우, 프레임(500)의 상부 영역(511) 및 하부 영역(512)에서의 모션 벡터는 잠재적으로 큰 오차를 포함할 수 있다. Referring to FIG. 5, in an equilateral rectangular projection, the distance between the upper region 511 and the lower region 512 tends to be exaggerated, so that when the equilateral rectangular projection is used, the upper region 511 and the lower portion of the frame 500 are used. The motion vector in region 512 can include potentially large errors.
이에 따라, 일 실시예에 따른 영상 처리 장치는 등변 직사각형 프로젝션이 사용되는 경우, 360도 영상의 안정화를 위한 회전 계산시 복수의 모션 벡터 중 상부 영역(511)과 하부 영역(512)의 모션 벡터를 제거할 수 있다. Accordingly, when an equilateral rectangular projection is used, the image processing apparatus according to an embodiment may determine the motion vectors of the upper region 511 and the lower region 512 among the plurality of motion vectors when calculating rotation for stabilization of a 360 degree image. Can be removed
도 6은 일 실시예에 따른 영상 처리 장치가 필터링을 통해 텍스쳐 프리 영역에 포함된 모션 벡터를 제거하는 방법을 설명하기 위한 도면이다. FIG. 6 is a diagram for describing a method of removing, by the image processing apparatus, a motion vector included in a texture free area through filtering, according to an exemplary embodiment.
도 6을 참조하면, 영상 처리 장치는 프레임에 대해 에지 검출을 수행하고, 이를 팽창시킴(dilate)으로써 마스크를 생성할 수 있다. 영상 처리 장치는 텍스쳐가 실질적으로 없는 영역인 텍스쳐-프리 영역의 제거를 위해, 프레임에 마스크를 적용할 수 있다. Referring to FIG. 6, the image processing apparatus may generate a mask by performing edge detection on a frame and dilatating the frame. The image processing apparatus may apply a mask to the frame to remove the texture-free area, which is an area substantially free of texture.
도 6에 도시된 예에서, 마스크 내의 검은 픽셀은 에지가 검출되지 않은 영역을 나타내고, 이는 텍스처가 실질적으로 없는 영역을 의미할 수 있다. 예를 들어, 마스크는 1 또는 0의 픽셀 값만을 포함하도록 임계화 될 수 있으며, 도 6에서 1은 백색 픽셀을 나타내고 0은 검은 픽셀을 나타낼 수 있다. 영상 처리 장치는 360도 영상 내의 모션 벡터의 위치를 마스크의 픽셀값과 비교하고, 마스크가 그 위치에서 픽셀 값 0을 갖는 경우 모션 벡터를 버림으로써, 필터링을 수행할 수 있다. In the example shown in FIG. 6, the black pixels in the mask represent areas where no edges are detected, which may mean areas that are substantially free of texture. For example, the mask may be thresholded to include only pixel values of 1 or 0, where 1 may represent white pixels and 0 may represent black pixels. The image processing apparatus may perform filtering by comparing the position of the motion vector in the 360 degree image with the pixel value of the mask and discarding the motion vector when the mask has the pixel value 0 at the position.
한편, 본 실시예에서는 텍스처 프리 영역의 모션 벡터가 필터링을 통해 제거되는 경우에 대해 설명하였으나, 다른 실시예에 따라, 모션 벡터는 신뢰할 수 없는 모션 벡터를 포함할 수 있는 다른 유형의 영역으로부터 필터링 될 수도 있다. 신뢰할 수 없는 모션 벡터를 포함할 수 있는 다른 유형의 영역의 예로는 단풍이나 연기와 같은 혼돈스러운(chaotic) 움직임을 나타내는 영역이 포함될 수 있다.Meanwhile, the present embodiment has been described in which the motion vector of the texture-free region is removed through filtering. However, according to another embodiment, the motion vector may be filtered from another type of region that may include an unreliable motion vector. It may be. Examples of other types of regions that may include unreliable motion vectors may include regions exhibiting chaotic movement such as foliage or smoke.
도 7은 일 실시예에 따른 영상 처리 장치가 필터링을 통해 글로벌 회전이 아닌 것으로 판단되는 모션 벡터를 제거하는 방법을 설명하기 위한 도면이다. FIG. 7 is a diagram for describing a method of removing, by the image processing apparatus, a motion vector determined to not be global rotation through filtering, according to an exemplary embodiment.
도 7을 참조하면, 영상 처리 장치는 360도 영상에서 글로벌 회전이 단위 구의 반대 측 상에서 유사한 크기 및 반대 방향을 갖는 모션 벡터를 생성한다는 사실을 이용하여, 필터링을 수행할 수 있다. 구체적으로, 영상 처리 장치는 단위 구상의 레퍼런스 포인트 또는 그 근방의 하나 이상의 모션 벡터를 "미러링 포인트"로 지칭되는 구의 반대 측상의 하나 이상의 대응되는 모션 벡터와 비교하여, 모션 벡터가 글로벌 회전과 연관되는지 여부를 판단할 수 있다. Referring to FIG. 7, the image processing apparatus may perform filtering by using a fact that a global rotation in a 360 degree image generates motion vectors having similar magnitudes and opposite directions on opposite sides of the unit sphere. Specifically, the image processing apparatus compares one or more motion vectors in or near the unitary sphere with one or more corresponding motion vectors on the opposite side of the sphere, referred to as " mirror points, " It can be determined.
영상 처리 장치는 서로 반대측에 있는 두 모션 벡터가 특정 임계값 (예 : ± 10 %) 내의 크기를 갖고, 서로 평행하며 반대 방향의 부호를 갖는 경우, 글로벌 회전을 나타내는 모션 벡터인 것으로 결정할 수 있다. 영상 처리 장치는 모션 벡터가 글로벌 회전을 나타내는 것으로 결정하는 경우, 이를 360도 영상의 안정화를 위한 회전을 결정하는데 이용할 수 있다. The image processing apparatus may determine that two motion vectors opposite to each other have a magnitude within a specific threshold (eg, ± 10%), are parallel to each other, and have signs in opposite directions, and are motion vectors indicating global rotation. When the image processing apparatus determines that the motion vector represents the global rotation, the image processing apparatus may use it to determine the rotation for stabilization of the 360 degree image.
도 8은 일 실시예에 따른 영상 처리 장치가 필터링을 통해 글로벌 회전을 나타내는 모션 벡터를 결정하는 방법을 설명하기 위한 흐름도이다. 8 is a flowchart for describing a method of determining, by the image processing apparatus, a motion vector indicating global rotation through filtering, according to an exemplary embodiment.
도 8을 참조하여 설명하는 단계 S810 내지 단계 S890은 도 3을 참조하여 전술한 단계 S310 및 단계 S330 사이에서 수행될 수 있다. Steps S810 to S890 described with reference to FIG. 8 may be performed between steps S310 and S330 described above with reference to FIG. 3.
단계 S810에서, 영상 처리 장치는 360도 영상에 대한 복수의 모션 벡터 중 적어도 하나의 영역의 모션 벡터를 필터링할 수 있다. 예를 들어, 영상 처리 장치는 360도 영상에 등변 직사각형 프로젝션이 사용된 경우, 필터링을 통해 360도 영상의 상부 영역 및 하부 영역에서의 모션 벡터를 제거할 수 있다. In operation S810, the image processing apparatus may filter motion vectors of at least one region of the plurality of motion vectors for the 360 degree image. For example, when an equilateral rectangular projection is used for a 360 degree image, the image processing apparatus may remove motion vectors in an upper region and a lower region of the 360 degree image through filtering.
단계 S820에서, 영상 처리 장치는 텍스쳐-프리 영역을 필터링하기 위한 마스크를 생성할 수 있다. 예를 들어, 영상 처리 장치는 360도 영상에 대해 에지 검출을 수행하고, 이를 팽창시킴으로써 마스크를 생성할 수 있다. In operation S820, the image processing apparatus may generate a mask for filtering the texture-free area. For example, the image processing apparatus may generate a mask by performing edge detection on a 360 degree image and expanding the same.
단계 S830에서, 영상 처리 장치는 텍스쳐-프리 영역의 모션 벡터를 필터링 하기 위해 현재 프레임에 마스크를 적용할 수 있다. 예를 들어, 영상 처리 장치는 360도 영상 내의 모션 벡터의 위치를 마스크의 픽셀값과 비교하고, 마스크가 그 위치에서 픽셀 값 0(에지가 검출되지 않은 영역)을 갖는 경우 모션 벡터를 제거함으로써, 필터링을 수행할 수 있다.In operation S830, the image processing apparatus may apply a mask to the current frame to filter the motion vector of the texture-free region. For example, the image processing apparatus compares the position of the motion vector in the 360 degree image with the pixel value of the mask, and removes the motion vector if the mask has pixel value 0 (the area where no edge is detected) at that position, Filtering can be performed.
단계 S840에서, 영상 처리 장치는 360도 영상에서 움직이는 오브젝트를 검출할 수 있다. 영상 처리 장치는 기존의 오브젝트 검출 알고리즘 중 적절한 오브젝트 검출 알고리즘을 사용하여, 360도 영상 내에서 하나 이상의 움직이는 오브젝트를 검출할 수 있다. In operation S840, the image processing apparatus may detect an object moving in the 360 degree image. The image processing apparatus may detect one or more moving objects within a 360 degree image by using an appropriate object detection algorithm among existing object detection algorithms.
단계 S850에서, 영상 처리 장치는 움직이는 오브젝트와 연관된 모션 벡터를 필터링할 수 있다. 영상 처리 장치는 필터링을 통해 남아있는 모션 벡터 중 움직이는 오브젝트와 연관된 모션 벡터를 제거할 수 있다. 움직이는 오브젝트와 연관된 모션 벡터는 다른 모션 벡터보다 크기가 훨씬 클 수 있다. 따라서, 영상 처리 장치는 이러한 모션 벡터를 필터링함으로써 안정화 회전이 빠르게 움직이는 오브젝트로 인한 큰 모션 벡터에 의해 왜곡되지 않도록 할 수 있다.In operation S850, the image processing apparatus may filter a motion vector associated with the moving object. The image processing apparatus may remove the motion vector associated with the moving object among the remaining motion vectors through filtering. The motion vector associated with the moving object can be much larger in size than other motion vectors. Accordingly, the image processing apparatus may filter the motion vector so that the stabilization rotation is not distorted by the large motion vector due to the fast moving object.
단계 S860에서, 영상 처리 장치는 구의 반대 측면 상의 모션 벡터들을 비교할 수 있다. In operation S860, the image processing apparatus may compare motion vectors on opposite sides of the sphere.
단계 S870에서, 영상 처리 장치는 모션 벡터가 글로벌 회전에 해당하는지 여부를 판단할 수 있다. 예를 들어, 영상 처리 장치는 서로 반대측에 있는 두 모션 벡터가 특정 임계값 (예 : ± 10 %) 이내의 크기를 가지며, 서로 평행하며 반대 방향의 부호를 갖는 경우, 글로벌 회전으로 판단할 수 있다.In operation S870, the image processing apparatus may determine whether the motion vector corresponds to the global rotation. For example, the image processing apparatus may determine that two motion vectors opposite to each other have a magnitude within a specific threshold (eg, ± 10%) and are parallel to each other and have signs in opposite directions. .
단계 S880에서, 영상 처리 장치는 모션 벡터가 글로벌 회전에 해당하는 것으로 판단됨에 따라, 모션 벡터를 유지할 수 있다. In operation S880, as the image processing apparatus determines that the motion vector corresponds to the global rotation, the image processing apparatus may maintain the motion vector.
단계 S890에서, 영상 처리 장치는 모션 벡터가 글로벌 회전에 해당하지 않는 것으로 판단됨에 따라, 회전 산출 시 모션 벡터를 제외시킬 수 있다. In operation S890, as the image processing apparatus determines that the motion vector does not correspond to the global rotation, the image processing apparatus may exclude the motion vector when calculating the rotation.
도 9는 일 실시예에 따른 영상 처리 장치가 모션 벡터를 3차원 회전으로 변환하는 방법을 설명하기 위한 흐름도이다. 9 is a flowchart illustrating a method of converting a motion vector into 3D rotation by an image processing apparatus, according to an exemplary embodiment.
단계 S910에서, 영상 처리 장치는 복수의 모션 벡터를 특정 방향의 특정 크기 범위에 대응하는 복수의 빈으로 분류할 수 있다.In operation S910, the image processing apparatus may classify the plurality of motion vectors into a plurality of bins corresponding to a specific size range in a specific direction.
영상 처리 장치가 복수의 모션 벡터를 복수의 빈으로 분류하는 구체적인 방법에 대해서는 도 10 내지 도 12를 참조하여 설명하도록 한다. A detailed method of classifying a plurality of motion vectors into a plurality of bins by the image processing apparatus will be described with reference to FIGS. 10 to 12.
도 10은 일 실시예에 따른 360도 영상의 모션 벡터를 도시한 도면이다. 10 illustrates a motion vector of a 360 degree image, according to an exemplary embodiment.
도 10을 참조하면, 도 10에는 도 6에 도시된 마스크를 적용한 후의 360도 영상에 대한 모션 벡터가 도시되어 있다. 본 실시예에서는 설명의 간략화를 위해, 수평(x 축) 방향의 모션 벡터만을 도시하였다. 다만, 이것은 일 예일 뿐이며, 본 실시예에 적용되는 방법은 3차원 회전을 결정하기 위해 다른 축의 모션 벡터로도 확장될 수 있다. Referring to FIG. 10, FIG. 10 illustrates a motion vector for a 360 degree image after applying the mask illustrated in FIG. 6. In the present embodiment, for simplicity of explanation, only the motion vector in the horizontal (x-axis) direction is shown. However, this is merely an example, and the method applied to the present embodiment may be extended to motion vectors of other axes to determine three-dimensional rotation.
도 11은 일 실시예에 따른 복수의 모션 벡터를 복수의 빈으로 분류한 결과를 설명하기 위한 표이다. 11 is a table for describing a result of classifying a plurality of motion vectors into a plurality of bins, according to an exemplary embodiment.
도 11을 참조하면, 특정 빈과 관련된 거리는 도 3의 단계 S330을 참조하여 전술한 것과 같이 기 결정된 변환을 이용하여 등가 각도로 변환될 수 있다. 본 실시예에서, 모션 벡터는 -1에서 +12 사이의 값을 가지는 것을 확인할 수 있다. Referring to FIG. 11, the distance associated with a particular bin may be converted into an equivalent angle using a predetermined transformation as described above with reference to step S330 of FIG. 3. In the present embodiment, it can be seen that the motion vector has a value between -1 and +12.
도 12는 일 실시예에 따라 도 11에서 분류된 복수의 모션 벡터를 히스토그램으로 표시한 도면이다. 12 illustrates a histogram of a plurality of motion vectors classified in FIG. 11 according to an exemplary embodiment.
도 12를 참조하면, 분류 결과, 20번째에 해당하는 거리 7의 빈에 가장 많은 모션 벡터가 포함됨을 확인할 수 있다. Referring to FIG. 12, as a result of the classification, it may be confirmed that the most motion vector is included in the bin at the distance 7 corresponding to the 20th.
계속해서 도 9를 참조하면, 단계 S920에서, 영상 처리 장치는 복수의 빈 중 가장 많은 수의 모션 벡터를 포함하는 빈을 식별할 수 있다. 도 12를 참조하여 전술한 바와 같이, 영상 처리 장치는 거리 7의 빈에 가장 많은 모션 벡터가 포함됨을 식별할 수 있다. 9, in operation S920, the image processing apparatus may identify bins including the largest number of motion vectors among the plurality of bins. As described above with reference to FIG. 12, the image processing apparatus may identify that the most motion vector is included in the bin at a distance of 7.
단계 S930에서, 영상 처리 장치는 식별된 빈과 이웃한 빈에 기초한 가중 평균으로 회전을 산출할 수 있다. In operation S930, the image processing apparatus may calculate a rotation based on a weighted average based on the identified bin and the neighboring bin.
전술한 단계 S920에서 식별된 빈에 대응되는 거리 7은 0.043 라디안 (2.46 °)의 회전과 등가이다. 일 실시예에 따른 영상 처리 장치는 식별된 빈에 대응되는 거리를 소정의 변환을 사용하여 등가 회전으로 변환함으로써 360도 영상을 안정화하기 위한 회전을 결정할 수 있다. The distance 7 corresponding to the bin identified in step S920 described above is equivalent to a rotation of 0.043 radians (2.46 °). The image processing apparatus according to an embodiment may determine a rotation for stabilizing a 360 degree image by converting a distance corresponding to the identified bin into an equivalent rotation by using a predetermined transformation.
본 실시예에서는, 실제 카메라 회전이 0.04109753 라디안으로 측정된 360도 영상을 기준으로 분석이 수행된 것으로 복수의 빈들 중에서 가장 많은 모션 벡터가 포함된 빈의 거리를 변환하여 획득된 값(0.043 라디안) 은 실제 카메라 회전의 합리적인 추정치라는 것을 알 수 있다.In the present embodiment, the analysis is performed based on a 360 degree image in which the actual camera rotation is measured in 0.04109753 radians. It can be seen that it is a reasonable estimate of the actual camera rotation.
한편, 다른 실시예에 따라 영상 처리 장치는 획득되는 회전 값에 대한 정확도를 높이기 위해, 전술한 단계 S920에서 식별된 빈 및 복수의 이웃한 빈들에 걸친 가중 평균을 사용하여 회전을 산출할 수 있다. 가중 평균의 예로 3 진폭 가우시안 가중 평균이 사용될 수 있으나, 이는 일 예일 뿐, 다른 실시 예에 따라, 다른 형태의 가중 평균이 사용될 수도 있다. 본 실시예에서 가중 평균을 적용하면 0.04266 라디안의 추정 회전이 얻어지며 이는 실제 카메라 회전 0.04109753에 더 가까운 수치임을 확인할 수 있다. Meanwhile, according to another exemplary embodiment, the image processing apparatus may calculate the rotation using a weighted average across the bins identified in step S920 and the plurality of neighboring bins in order to increase the accuracy of the obtained rotation value. As an example of the weighted average, a 3-amplitude Gaussian weighted average may be used. However, this is merely an example, and other types of weighted averages may be used according to other embodiments. Applying the weighted average in this embodiment, an estimated rotation of 0.04266 radians is obtained, which is closer to the actual camera rotation of 0.04109753.
모션 벡터를 3 차원 회전으로 변환하는 전술한 방법에 대한 또 다른 대안으로서, 다른 실시예에서는 360도 영상의 프레임에 대한 다음의 수학식 2에 따른 전체 모션 필드 M을 결정하기 위해 다음과 같이 복수의 모션 벡터 vj를 합산함으로써 회전이 결정될 수 있다.As another alternative to the above-described method of converting a motion vector into a three-dimensional rotation, in another embodiment, to determine the entire motion field M according to the following equation 2 for a frame of a 360 degree image, a plurality of The rotation can be determined by summing the motion vectors vj.
[수학식 2] [Equation 2]
Figure PCTKR2018005440-appb-I000004
Figure PCTKR2018005440-appb-I000004
360도 영상을 안정화하기 위한 3 차원 회전은 하기의 수학식 3과 같이 전체 모션 필드를 최소화하는 회전 R을 결정함으로써 획득될 수 있다.The three-dimensional rotation for stabilizing the 360 degree image may be obtained by determining a rotation R that minimizes the entire motion field as shown in Equation 3 below.
[수학식 3][Equation 3]
Figure PCTKR2018005440-appb-I000005
Figure PCTKR2018005440-appb-I000005
도 13은 일 실시예에 따른 영상 처리 장치가 360도 영상에 대해 모션 벡터를 기초로 획득된 회전 정보 및 흔들림에 관한 센싱 데이터를 조합하여 회전 정보를 재결정하는 방법을 설명하기 위한 흐름도이다. FIG. 13 is a flowchart for describing a method of determining, by an image processing apparatus, rotation information obtained by combining a rotation information acquired based on a motion vector and sensing data about shaking for a 360 degree image.
단계 S1310에서, 영상 처리 장치는 360도 영상에 대한 복수의 모션 벡터 중 360도 영상의 글로벌 회전을 나타내는 적어도 하나의 모션 벡터를 결정할 수 있다. In operation S1310, the image processing apparatus may determine at least one motion vector indicating global rotation of the 360 degree image among the plurality of motion vectors with respect to the 360 degree image.
한편, 단계 S1310은 도 2를 참조하여 전술한 단계 S220과 대응될 수 있다. Meanwhile, step S1310 may correspond to step S220 described above with reference to FIG. 2.
단계 S1320에서, 영상 처리 장치는 결정된 적어도 하나의 모션 벡터를 변환하여 3차원 회전 정보를 획득할 수 있다. In operation S1320, the image processing apparatus may obtain 3D rotation information by converting the determined at least one motion vector.
한편, 단계 S1320은 도 2를 참조하여 전술한 단계 S230과 대응될 수 있다. Meanwhile, step S1320 may correspond to step S230 described above with reference to FIG. 2.
단계 S1330에서, 영상 처리 장치는 360도 영상의 촬영 시 획득된 흔들림에 관한 센서 데이터 및 회전 정보를 조합하여 360도 영상에 대한 회전 정보를 재결정할 수 있다. In operation S1330, the image processing apparatus may re-determine the rotation information of the 360 degree image by combining the sensor data and the rotation information regarding the shaking obtained when the 360 degree image is captured.
예를 들어, 영상 처리 장치는 360도 영상이 캡쳐되는 동안 촬영 장치의 흔들림에 관한 센서 데이터를 획득하도록 설정될 수 있다. 영상 처리 장치는 회전을 결정할 때, 센서 데이터를 고려할 수 있다. 예를 들어, 영상 처리 장치는 센서 데이터를 사용하여 모션 벡터를 분석하여 획득한 회전 정보를 검증하거나 모션 벡터를 분석하여 획득한 회전 정보를 사용하여 센서 데이터를 통해 얻은 회전 정보를 검증할 수 있다.For example, the image processing apparatus may be set to acquire sensor data regarding shaking of the photographing apparatus while a 360 degree image is captured. The image processing apparatus may consider sensor data when determining rotation. For example, the image processing apparatus may verify rotation information obtained by analyzing the motion vector using the sensor data, or verify rotation information obtained through the sensor data using the rotation information obtained by analyzing the motion vector.
다른 예에 따라 영상 처리 장치는 센서 데이터를 모션 벡터를 분석하여 획득한 회전 정보에 병합할 수 있다. 예를 들어, 모션 벡터를 분석하여 획득한 회전 정보에 대한 센서 데이터의 상대적인 에러 마진에 따라 센서 데이터 및 모션 벡터 분석 결과에 가중치를 적용하여 센서 데이터와 모션 데이터를 분석한 결과를 병합할 수 있다. 이러한 접근법은, 모션 벡터를 사용하여 계산된 회전이 센서에 의해 획득된 측정 보다 큰 오차를 가질 수 있는 시나리오에서 유리할 수 있다. 예를 들어, 장면이 텍스처가 없는 큰 영역이 존재하는 경우가 전술한 시나리오에 포함될 수 있다. 이 상황에서 센서 데이터에 더 많은 가중치가 부여될 수 있다. 반면 센서는 드리프트 문제를 겪을 수 있다. 드리프트 문제는 센서 데이터를 모션 벡터에서 계산된 회전과 결합함으로써 완화될 수 있다. According to another example, the image processing apparatus may merge sensor data into rotation information obtained by analyzing a motion vector. For example, the result of analyzing the sensor data and the motion data may be merged by applying a weight to the sensor data and the motion vector analysis result according to the relative error margin of the sensor data with respect to the rotation information obtained by analyzing the motion vector. This approach may be advantageous in scenarios in which the rotation calculated using the motion vector may have a larger error than the measurement obtained by the sensor. For example, the case where the scene has a large area without texture may be included in the above-described scenario. In this situation, more weight may be given to the sensor data. Sensors, on the other hand, can suffer from drift problems. The drift problem can be mitigated by combining the sensor data with the rotation computed in the motion vector.
도 14는 일 실시예에 따른 영상 처리 장치(1400)의 블록도이다. 14 is a block diagram of an image processing apparatus 1400, according to an exemplary embodiment.
도 14를 참조하면, 영상 처리 장치(1400)는 적어도 하나의 프로세서(1410) 및 메모리(1420)를 포함할 수 있다. 다만, 이는 일 실시예일 뿐, 영상 처리 장치(1400)의 구성 요소가 전술한 예에 한정되는 것은 아니다.Referring to FIG. 14, the image processing apparatus 1400 may include at least one processor 1410 and a memory 1420. However, this is only an exemplary embodiment, and components of the image processing apparatus 1400 are not limited to the above-described example.
적어도 하나의 프로세서(1410)는 도 1 내지 도 13을 참조하여 전술한 360도 영상의 처리 방법을 수행할 수 있다. 예를 들어, 적어도 하나의 프로세서(1410)는 360도 영상에 대한 복수의 모션 벡터를 획득할 수 있다. 적어도 하나의 프로세서(1410)는 필터링을 통해 복수의 모션 벡터 중 360도 영상의 글로벌 회전을 나타내는 적어도 하나의 모션 벡터를 결정할 수 있다. 또한, 적어도 하나의 프로세서(1410)는 결정된 적어도 하나의 모션 벡터를 변환하여 360도 영상에 대한 3차원 회전 정보를 획득할 수 있다. 적어도 하나의 프로세서(1410)는 획득된 3차원 회전 정보를 기초로 흔들림으로 인한 360도 영상의 왜곡을 보정할 수 있다. At least one processor 1410 may perform the processing method of the 360-degree image described above with reference to FIGS. 1 to 13. For example, the at least one processor 1410 may obtain a plurality of motion vectors for the 360 degree image. The at least one processor 1410 may determine at least one motion vector indicating global rotation of the 360 degree image among the plurality of motion vectors through filtering. In addition, the at least one processor 1410 may obtain the 3D rotation information about the 360 degree image by converting the determined at least one motion vector. The at least one processor 1410 may correct the distortion of the 360 degree image due to the shaking based on the obtained 3D rotation information.
한편, 메모리(1420)는 적어도 하나의 프로세서(1410)의 처리 및 제어를 위한 프로그램들(하나 이상의 인스트럭션들)을 저장할 수 있다. 메모리(1420)에 저장된 프로그램들은 기능에 따라 복수 개의 모듈들로 구분될 수 있다. The memory 1420 may store programs (one or more instructions) for processing and controlling the at least one processor 1410. Programs stored in the memory 1420 may be divided into a plurality of modules according to their functions.
일 실시예에 따라 메모리(1420)는 도 15를 참고하여 후술할 데이터 학습부 및 데이터 인식부가 소프트웨어 모듈로 구성될 수 있다. 또한, 데이터 학습부 및 데이터 인식부는 각각 독립적으로 학습 네트워크 모델을 포함하거나, 하나의 학습 네트워크 모델을 공유할 수 있다. According to an embodiment, the memory 1420 may be configured as a software module and a data learner and a data recognizer, which will be described later with reference to FIG. 15. In addition, the data learning unit and the data recognizing unit may each independently include a learning network model, or share one learning network model.
도 15는 일 실시예에 따른 적어도 하나의 프로세서(1410)를 설명하기 위한 도면이다. 15 is a diagram for describing at least one processor 1410 according to an exemplary embodiment.
도 15를 참조하면, 일 실시예에 따른 적어도 하나의 프로세서(1410)는 데이터 학습부(1510) 및 데이터 인식부(1520)를 포함할 수 있다.Referring to FIG. 15, at least one processor 1410 may include a data learner 1510 and a data recognizer 1520.
데이터 학습부(1510)는 360도 영상에 대한 복수의 모션 벡터로부터 3차원 회전 정보를 획득하기 위한 기준을 학습할 수 있다. 데이터 인식부(1520)는 데이터 학습부(1510)를 통해 학습된 기준에 기초하여, 360도 영상에 대한 복수의 모션 벡터로부터 3차원 회전 정보를 결정할 수 있다. The data learner 1510 may learn a criterion for obtaining 3D rotation information from a plurality of motion vectors for a 360 degree image. The data recognizer 1520 may determine 3D rotation information from the plurality of motion vectors for the 360 degree image based on the criteria learned by the data learner 1510.
데이터 학습부(1510) 및 데이터 인식부(1520) 중 적어도 하나는, 적어도 하나의 하드웨어 칩 형태로 제작되어 영상 처리 장치에 탑재될 수 있다. 예를 들어, 데이터 학습부(1510) 및 데이터 인식부(1520) 중 적어도 하나는 인공 지능(AI; artificial intelligence)을 위한 전용 하드웨어 칩 형태로 제작될 수도 있고, 또는 기존의 범용 프로세서(예: CPU 또는 application processor) 또는 그래픽 전용 프로세서(예: GPU)의 일부로 제작되어 전술한 각종 영상 처리 장치에 탑재될 수도 있다.At least one of the data learner 1510 and the data recognizer 1520 may be manufactured in the form of at least one hardware chip and mounted on the image processing apparatus. For example, at least one of the data learner 1510 and the data recognizer 1520 may be manufactured in the form of a dedicated hardware chip for artificial intelligence (AI), or an existing general purpose processor (eg, a CPU). Alternatively, the processor may be manufactured as a part of an application processor or a graphics processor (eg, a GPU) and mounted on the aforementioned various image processing apparatuses.
이 경우, 데이터 학습부(1510) 및 데이터 인식부(1520)는 하나의 영상 처리 장치에 탑재될 수도 있으며, 또는 별개의 영상 처리 장치들에 각각 탑재될 수도 있다. 예를 들어, 데이터 학습부(1510) 및 데이터 인식부(1520) 중 하나는 영상 처리 장치에 포함되고, 나머지 하나는 서버에 포함될 수 있다. 또한, 데이터 학습부(1510) 및 데이터 인식부(1520)는 유선 또는 무선으로 통하여, 데이터 학습부(1510)가 구축한 모델 정보를 데이터 인식부(1520)로 제공할 수도 있고, 데이터 인식부(1520)로 입력된 데이터가 추가 학습 데이터로서 데이터 학습부(1510)로 제공될 수도 있다.In this case, the data learner 1510 and the data recognizer 1520 may be mounted in one image processing apparatus, or Each may be mounted on separate image processing apparatuses. For example, one of the data learner 1510 and the data recognizer 1520 may be included in the image processing apparatus, and the other may be included in the server. In addition, the data learner 1510 and the data recognizer 1520 may provide model information constructed by the data learner 1510 to the data recognizer 1520 via a wired or wireless connection. The data input to 1520 may be provided to the data learner 1510 as additional learning data.
한편, 데이터 학습부(1510) 및 데이터 인식부(1520) 중 적어도 하나는 소프트웨어 모듈로 구현될 수 있다. 데이터 학습부(1510) 및 데이터 인식부(1520) 중 적어도 하나가 소프트웨어 모듈(또는, 인스트럭션(instruction) 포함하는 프로그램 모듈)로 구현되는 경우, 소프트웨어 모듈은 컴퓨터로 읽을 수 있는 판독 가능한 비일시적 판독 가능 기록매체(non-transitory computer readable media)에 저장될 수 있다. 또한, 이 경우, 적어도 하나의 소프트웨어 모듈은 OS(Operating System)에 의해 제공되거나, 소정의 어플리케이션에 의해 제공될 수 있다. 또는, 적어도 하나의 소프트웨어 모듈 중 일부는 OS(Operating System)에 의해 제공되고, 나머지 일부는 소정의 어플리케이션에 의해 제공될 수 있다. Meanwhile, at least one of the data learner 1510 and the data recognizer 1520 may be implemented as a software module. When at least one of the data learner 1510 and the data recognizer 1520 is implemented as a software module (or a program module including instructions), the software module may be computer readable non-transitory readable. It may be stored in a non-transitory computer readable media. In this case, at least one software module may be provided by an operating system (OS) or by a predetermined application. Alternatively, some of the at least one software module may be provided by an operating system (OS), and others may be provided by a predetermined application.
도 16은 일 실시예에 따른 데이터 학습부(1510)의 블록도이다. 16 is a block diagram of the data learner 1510, according to an exemplary embodiment.
도 16을 참조하면, 일부 실시예에 따른 데이터 학습부(1510)는 데이터 획득부(1610), 전처리부(1620), 학습 데이터 선택부(1630), 모델 학습부(1640) 및 모델 평가부(1650)를 포함할 수 있다. 다만, 이는 일 실시예일 뿐, 전술한 구성들 보다 적은 구성 요소로 데이터 학습부(1510)가 구성되거나, 전술한 구성들 이외에 다른 구성 요소가 추가적으로 데이터 학습부(1510)에 포함될 수 있다. Referring to FIG. 16, the data learner 1510 may include a data acquirer 1610, a preprocessor 1620, a training data selector 1630, a model learner 1640, and a model evaluator ( 1650). However, this is only an example, and the data learning unit 1510 may be configured with fewer components than those described above, or other components may be additionally included in the data learning unit 1510.
데이터 획득부(1610)는 적어도 하나의 360도 영상을 학습 데이터로 획득할 수 있다. 일 예로, 데이터 획득부(1610)는 데이터 학습부(1510)를 포함하는 영상 처리 장치 또는 데이터 학습부(1510)를 포함하는 영상 처리 장치와 통신 가능한 외부의 장치로부터 적어도 하나의 360도 영상을 획득할 수 있다. The data acquirer 1610 may acquire at least one 360 degree image as learning data. For example, the data acquirer 1610 acquires at least one 360 degree image from an image processing apparatus including the data learning unit 1510 or an external device that can communicate with the image processing apparatus including the data learning unit 1510. can do.
전처리부(1620)는 후술할 모델 학습부(1640)가 학습을 위하여 획득된 적어도 하나의 360도 영상을 이용할 수 있도록, 획득된 적어도 하나의 360도 영상을 기 설정된 포맷으로 가공할 수 있다. The preprocessor 1620 may process the obtained at least one 360 degree image in a preset format so that the model learner 1640, which will be described later, uses the at least one 360 degree image acquired for learning.
학습 데이터 선택부(1630)는 전처리된 데이터 중에서 학습에 필요한 360도 영상을 선택할 수 있다. 선택된 360도 영상은 모델 학습부(1640)에 제공될 수 있다. 학습 데이터 선택부(1630)는 설정된 기준에 따라, 전처리된 360도 영상 중에서 학습에 필요한 360도 영상을 선택할 수 있다. The training data selector 1630 may select a 360 degree image for learning from the preprocessed data. The selected 360 degree image may be provided to the model learner 1640. The training data selector 1630 may select a 360 degree image for learning from the preprocessed 360 degree images according to the set criteria.
모델 학습부(1640)는 학습 네트워크 모델 내의 복수의 레이어에서 360도 영상으로부터 어떠한 정보를 이용하여, 복수의 모션 벡터로부터 3차원 회전 정보를 결정할 지 여부에 관한 기준을 학습할 수 있다. The model learner 1640 may learn a criterion about whether to determine the 3D rotation information from the plurality of motion vectors by using some information from the 360 degree image in the plurality of layers in the learning network model.
또한, 모델 학습부(1640)는, 예를 들어, 획득된 360도 영상이 학습에 적절한지 여부에 대한 피드백을 이용하는 강화 학습(reinforcement learning)을 통하여, 데이터 인식 모델을 학습시킬 수 있다.In addition, the model learner 1640 may train the data recognition model, for example, through reinforcement learning using feedback on whether the acquired 360-degree image is suitable for learning.
또한, 데이터 인식 모델이 학습되면, 모델 학습부(1640)는 학습된 데이터 인식 모델을 저장할 수 있다. In addition, when the data recognition model is trained, the model learner 1640 may store the trained data recognition model.
모델 평가부(1650)는 학습 네트워크 모델에 평가 데이터를 입력하고, 평가 데이터로부터 출력되는 인식 결과가 소정 기준을 만족하지 못하는 경우, 모델 학습부(1640)로 하여금 다시 학습하도록 할 수 있다. 이 경우, 평가 데이터는 학습 네트워크 모델을 평가하기 위한 기 설정된 데이터일 수 있다. The model evaluator 1650 may input evaluation data into the learning network model, and if the recognition result output from the evaluation data does not satisfy a predetermined criterion, the model evaluator 1640 may retrain the model. In this case, the evaluation data may be preset data for evaluating the learning network model.
한편, 데이터 학습부(1510) 내의 데이터 획득부(1610), 전처리부(1620), 학습 데이터 선택부(1630), 모델 학습부(1640) 및 모델 평가부(1650) 중 적어도 하나는, 적어도 하나의 하드웨어 칩 형태로 제작되어 영상 처리 장치에 탑재될 수 있다. 예를 들어, 데이터 획득부(1610), 전처리부(1620), 학습 데이터 선택부(1630), 모델 학습부(1640) 및 모델 평가부(1650) 중 적어도 하나는 인공 지능(AI; artificial intelligence)을 위한 전용 하드웨어 칩 형태로 제작될 수도 있고, 또는 기존의 범용 프로세서(예: CPU 또는 application processor) 또는 그래픽 전용 프로세서(예: GPU)의 일부로 제작되어 전술한 각종 영상 처리 장치에 탑재될 수도 있다.At least one of the data acquirer 1610, the preprocessor 1620, the training data selector 1630, the model learner 1640, and the model evaluator 1650 in the data learner 1510 may be at least one. It may be manufactured in the form of a hardware chip and mounted on an image processing apparatus. For example, at least one of the data acquirer 1610, the preprocessor 1620, the training data selector 1630, the model learner 1640, and the model evaluator 1650 may be artificial intelligence (AI). It may be manufactured in the form of a dedicated hardware chip, or may be manufactured as part of an existing general purpose processor (eg, a CPU or an application processor) or a graphics dedicated processor (eg, a GPU) and mounted on the above-described various image processing apparatuses.
또한, 데이터 획득부(1610), 전처리부(1620), 학습 데이터 선택부(1630), 모델 학습부(1640) 및 모델 평가부(1650)는 하나의 영상 처리 장치에 탑재될 수도 있으며, 또는 별개의 영상 처리 장치들에 각각 탑재될 수도 있다. 예를 들어, 데이터 획득부(1610), 전처리부(1620), 학습 데이터 선택부(1630), 모델 학습부(1640) 및 모델 평가부(1650) 중 일부는 영상 처리 장치에 포함되고, 나머지 일부는 서버에 포함될 수 있다.In addition, the data acquirer 1610, the preprocessor 1620, the training data selector 1630, the model learner 1640, and the model evaluator 1650 may be mounted in one image processing apparatus or may be separate. May be mounted on the respective image processing apparatuses. For example, some of the data acquirer 1610, the preprocessor 1620, the training data selector 1630, the model learner 1640, and the model evaluator 1650 are included in the image processing apparatus, and some of the remaining data are included in the image processing apparatus. May be included in the server.
또한, 데이터 획득부(1610), 전처리부(1620), 학습 데이터 선택부(1630), 모델 학습부(1640) 및 모델 평가부(1650) 중 적어도 하나는 소프트웨어 모듈로 구현될 수 있다. 데이터 획득부(1610), 전처리부(1620), 학습 데이터 선택부(1630), 모델 학습부(1640) 및 모델 평가부(1650) 중 적어도 하나가 소프트웨어 모듈(또는, 인스트럭션(instruction) 포함하는 프로그램 모듈)로 구현되는 경우, 소프트웨어 모듈은 컴퓨터로 읽을 수 있는 판독 가능한 비일시적 판독 가능 기록매체(non-transitory computer readable media)에 저장될 수 있다. 또한, 이 경우, 적어도 하나의 소프트웨어 모듈은 OS(Operating System)에 의해 제공되거나, 소정의 애플리케이션에 의해 제공될 수 있다. 또는, 적어도 하나의 소프트웨어 모듈 중 일부는 OS(Operating System)에 의해 제공되고, 나머지 일부는 소정의 애플리케이션에 의해 제공될 수 있다.In addition, at least one of the data acquirer 1610, the preprocessor 1620, the training data selector 1630, the model learner 1640, and the model evaluator 1650 may be implemented as a software module. A program in which at least one of the data acquisition unit 1610, the preprocessor 1620, the training data selector 1630, the model learner 1640, and the model evaluator 1650 includes a software module (or instruction). Module may be stored on a computer readable non-transitory computer readable media. In this case, at least one software module may be provided by an operating system (OS) or by a predetermined application. Alternatively, some of the at least one software module may be provided by an operating system (OS), and others may be provided by a predetermined application.
도 17는 일 실시예에 따른 데이터 인식부(1520)의 블록도이다.17 is a block diagram of a data recognizer 1520 according to an embodiment.
도 17를 참조하면, 일부 실시예에 따른 데이터 인식부(1520)는 데이터 획득부(1710), 전처리부(1720), 인식 데이터 선택부(1730), 인식 결과 제공부(1740) 및 모델 갱신부(1750)를 포함할 수 있다.Referring to FIG. 17, the data recognizer 1520 according to some embodiments includes a data acquirer 1710, a preprocessor 1720, a recognition data selector 1730, a recognition result provider 1740, and a model updater. (1750).
데이터 획득부(1710)는 적어도 하나의 360도 영상을 획득할 수 있으며, 전처리부(1720)는 획득된 적어도 하나의 360도 영상을 전처리할 수 있다. 전처리부(1720)는 후술할 인식 결과 제공부(1740)가 복수의 모션 벡터에 대한 3차원 회전 정보의 결정을 위하여 획득된 적어도 하나의 360도 영상을 이용할 수 있도록, 적어도 하나의 360도 영상을 기 설정된 포맷으로 가공할 수 있다. 인식 데이터 선택부(1730)는 전처리된 데이터에 포함된 복수의 모션 벡터 중 3차원 회전 정보 결정에 필요한 모션 벡터를 선택할 수 있다. 선택된 모션 벡터는 인식 결과 제공부(1740)에게 제공될 수 있다. The data acquirer 1710 may acquire at least one 360 degree image, and the preprocessor 1720 may preprocess the obtained at least one 360 degree image. The preprocessor 1720 may generate at least one 360-degree image so that the recognition result provider 1740, which will be described later, may use the at least one 360-degree image obtained for the determination of the 3D rotation information for the plurality of motion vectors. Can be processed in a preset format. The recognition data selector 1730 may select a motion vector required for determining 3D rotation information among a plurality of motion vectors included in the preprocessed data. The selected motion vector may be provided to the recognition result provider 1740.
인식 결과 제공부(1740)는 선택된 모션 벡터를 기초로 3차원 회전 정보를 결정할 수 있다. 또한, 인식 결과 제공부(1740)는 결정된 3차원 회전 정보를 제공할 수 있다. The recognition result provider 1740 may determine 3D rotation information based on the selected motion vector. In addition, the recognition result providing unit 1740 may provide the determined 3D rotation information.
모델 갱신부(1750)는 인식 결과 제공부(1740)에 의해 제공되는 3차원 회전 정보에 대한 평가에 기초하여, 학습 네트워크 모델에 포함된 레이어의 파라미터 등이 갱신되도록 평가에 대한 정보를 도 16을 참고하여 전술한 모델 학습부(1640)에게 제공할 수 있다. The model updater 1750 based on the evaluation of the 3D rotation information provided by the recognition result providing unit 1740, provides information on the evaluation so that the parameters of the layers included in the learning network model are updated. Reference may be provided to the model learner 1640 described above.
한편, 데이터 인식부(1520) 내의 데이터 획득부(1710), 전처리부(1720), 인식 데이터 선택부(1730), 인식 결과 제공부(1740) 및 모델 갱신부(1750) 중 적어도 하나는, 적어도 하나의 하드웨어 칩 형태로 제작되어 영상 처리 장치에 탑재될 수 있다. 예를 들어, 데이터 획득부(1710), 전처리부(1720), 인식 데이터 선택부(1730), 인식 결과 제공부(1740) 및 모델 갱신부(1750) 중 적어도 하나는 인공 지능을 위한 전용 하드웨어 칩 형태로 제작될 수도 있고, 또는 기존의 범용 프로세서(예: CPU 또는 application processor) 또는 그래픽 전용 프로세서(예: GPU)의 일부로 제작되어 전술한 각종 영상 처리 장치에 탑재될 수도 있다.Meanwhile, at least one of the data acquirer 1710, the preprocessor 1720, the recognition data selector 1730, the recognition result provider 1740, and the model updater 1750 in the data recognizer 1520 may be at least It may be manufactured in the form of one hardware chip and mounted on an image processing apparatus. For example, at least one of the data acquirer 1710, the preprocessor 1720, the recognition data selector 1730, the recognition result provider 1740, and the model updater 1750 may be a dedicated hardware chip for artificial intelligence. It may be manufactured in the form, or may be manufactured as a part of an existing general purpose processor (eg, a CPU or an application processor) or a graphics dedicated processor (eg, a GPU) and mounted on the above-described various image processing apparatuses.
또한, 데이터 획득부(1710), 전처리부(1720), 인식 데이터 선택부(1730), 인식 결과 제공부(1740) 및 모델 갱신부(1750)는 하나의 영상 처리 장치에 탑재될 수도 있으며, 또는 별개의 영상 처리 장치들에 각각 탑재될 수도 있다. 예를 들어, 데이터 획득부(1710), 전처리부(1720), 인식 데이터 선택부(1730), 인식 결과 제공부(1740) 및 모델 갱신부(1750) 중 일부는 영상 처리 장치에 포함되고, 나머지 일부는 서버에 포함될 수 있다.In addition, the data acquirer 1710, the preprocessor 1720, the recognition data selector 1730, the recognition result provider 1740, and the model updater 1750 may be mounted in one image processing apparatus, or Each may be mounted on separate image processing apparatuses. For example, some of the data acquirer 1710, the preprocessor 1720, the recognition data selector 1730, the recognition result provider 1740, and the model updater 1750 are included in the image processing apparatus. Some may be included in the server.
또한, 데이터 획득부(1710), 전처리부(1720), 인식 데이터 선택부(1730), 인식 결과 제공부(1740) 및 모델 갱신부(1750) 중 적어도 하나는 소프트웨어 모듈로 구현될 수 있다. 데이터 획득부(1710), 전처리부(1720), 인식 데이터 선택부(1730), 인식 결과 제공부(1740) 및 모델 갱신부(1750) 중 적어도 하나가 소프트웨어 모듈(또는, 인스트럭션(instruction) 포함하는 프로그램 모듈)로 구현되는 경우, 소프트웨어 모듈은 컴퓨터로 읽을 수 있는 판독 가능한 비일시적 판독 가능 기록매체(non-transitory computer readable media)에 저장될 수 있다. 또한, 이 경우, 적어도 하나의 소프트웨어 모듈은 OS(Operating System)에 의해 제공되거나, 소정의 어플리케이션에 의해 제공될 수 있다. 또는, 적어도 하나의 소프트웨어 모듈 중 일부는 OS(Operating System)에 의해 제공되고, 나머지 일부는 소정의 어플리케이션에 의해 제공될 수 있다.In addition, at least one of the data acquirer 1710, the preprocessor 1720, the recognition data selector 1730, the recognition result provider 1740, and the model updater 1750 may be implemented as a software module. At least one of the data acquirer 1710, the preprocessor 1720, the recognition data selector 1730, the recognition result provider 1740, and the model updater 1750 includes a software module (or instruction). If implemented as a program module, the software module may be stored in a computer readable non-transitory computer readable media. In this case, at least one software module may be provided by an operating system (OS) or by a predetermined application. Alternatively, some of the at least one software module may be provided by an operating system (OS), and others may be provided by a predetermined application.
도 18은 다른 실시예에 따른 영상 처리 장치의 블록도이다. 18 is a block diagram of an image processing apparatus according to another exemplary embodiment.
도 18을 참조하면, 본 실시예에서, 영상 처리 장치는 3차원 회전 정보를 결정하기 위해 360도 영상을 분석하는 제 1 장치(1800)를 포함하고, 제 1 장치(1800)에 의해 제공된 회전에 기초하여 안정화 된 영상을 생성하는 제 2 장치(1810)를 포함할 수 있다. 다른 실시 예들에서, 제 1 장치(1800) 및 제 2 장치(1810)의 일부 또는 모든 구성 요소들은 단일의 물리적 장치로 구현될 수 있다.Referring to FIG. 18, in the present embodiment, the image processing apparatus includes a first apparatus 1800 for analyzing a 360 degree image to determine three-dimensional rotation information, and includes a rotation provided by the first apparatus 1800. It may include a second device 1810 for generating a stabilized image based on. In other embodiments, some or all of the components of the first device 1800 and the second device 1810 may be implemented as a single physical device.
제 1 장치(1800)는, 360도 영상에 대한 복수의 모션 벡터를 획득하는 모션 벡터 획득 유닛(1801) 및 복수의 모션 벡터를 3 차원 회전으로 변환하고 3차원 회전을 제 2 장치(1810)에 포함된 영상 프로세싱 유닛(1811)에 제공하는 모션 벡터 변환 유닛(1802)을 포함할 수 있다. The first device 1800 converts the motion vector obtaining unit 1801 to obtain a plurality of motion vectors for the 360 degree image, and converts the plurality of motion vectors into three-dimensional rotation and converts the three-dimensional rotation to the second device 1810. It may include a motion vector conversion unit 1802 providing the included image processing unit 1811.
제 2 장치(1810)는 영상 프로세싱 유닛(1811) 및 영상 프로세싱 유닛(1811)에 의해 렌더링된 안정화된 360도 영상을 디스플레이 하는 디스플레이(1812)를 포함할 수 있다. 또한, 제 2 장치(1810)는 회전 및/또는 변환을 정의하는 촬영 장치의 제어 입력을 수신하도록 구성된 입력 유닛(1813)을 더 포함할 수 있다. The second device 1810 can include an image processing unit 1811 and a display 1812 that displays a stabilized 360 degree image rendered by the image processing unit 1811. In addition, the second device 1810 may further include an input unit 1813 configured to receive a control input of the imaging device defining the rotation and / or the transformation.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. Method according to an embodiment of the present invention is implemented in the form of program instructions that can be executed by various computer means may be recorded on a computer readable medium. The computer readable medium may include program instructions, data files, data structures, etc. alone or in combination. Program instructions recorded on the media may be those specially designed and constructed for the purposes of the present invention, or they may be of the kind well-known and available to those having skill in the computer software arts. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tape, optical media such as CD-ROMs, DVDs, and magnetic disks, such as floppy disks. Magneto-optical media, and hardware devices specifically configured to store and execute program instructions, such as ROM, RAM, flash memory, and the like. Examples of program instructions include not only machine code generated by a compiler, but also high-level language code that can be executed by a computer using an interpreter or the like.
실시 예에 따른 장치는 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(permanent storage), 외부 장치와 통신하는 통신 포트, 터치 패널, 키(key), 버튼 등과 같은 사용자 인터페이스 장치 등을 포함할 수 있다. 소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 상기 프로세서상에서 실행 가능한 컴퓨터가 읽을 수 있는 코드들 또는 프로그램 명령들로서 컴퓨터가 읽을 수 있는 기록 매체 상에 저장될 수 있다. 여기서 컴퓨터가 읽을 수 있는 기록 매체로 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다. 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다. 매체는 컴퓨터에 의해 판독가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다. According to an embodiment, a device may include a processor, a memory for storing and executing program data, a persistent storage such as a disk drive, a communication port for communicating with an external device, a touch panel, a key, a user interface such as a button, and the like. Device and the like. Methods implemented by software modules or algorithms may be stored on a computer readable recording medium as computer readable codes or program instructions executable on the processor. The computer-readable recording medium may be a magnetic storage medium (eg, read-only memory (ROM), random-access memory (RAM), floppy disk, hard disk, etc.) and an optical reading medium (eg, CD-ROM). ) And DVD (Digital Versatile Disc). The computer readable recording medium can be distributed over network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion. The medium is readable by the computer, stored in the memory, and can be executed by the processor.
도면에 도시된 실시 예들에서 참조 부호를 기재하였으며, 실시 예들을 설명하기 위하여 특정 용어들을 사용하였으나, 특정 용어에 의해 본 발명이 한정되는 것은 아니며, 실시 예는 당업자에 있어서 통상적으로 생각할 수 있는 모든 구성 요소들을 포함할 수 있다. In the embodiments illustrated in the drawings, reference numerals have been used, and specific terms have been used to describe the embodiments, but the present invention is not limited to the specific terms, and the embodiments are all contemplated by those skilled in the art. It may contain elements.
실시 예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 실시 예는 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩 업 테이블(look-up table) 등과 같은 직접 회로 구성들을 채용할 수 있다. 또한, 실시예는 동종의 또는 서로 다른 종류의 코어들, 서로 다른 종류의 CPU들을 채용할 수도 있다. 본 발명에의 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 실시 예는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. "매커니즘", "요소", "수단", "구성"과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.An embodiment may be represented by functional block configurations and various processing steps. Such functional blocks may be implemented in various numbers of hardware or / and software configurations that perform particular functions. For example, an embodiment may include an integrated circuit configuration such as memory, processing, logic, look-up table, etc. that may execute various functions by the control of one or more microprocessors or other control devices. You can employ them. Also, an embodiment may employ the same or different types of cores, different types of CPUs. Similar to the components in the present invention may be implemented in software programming or software elements, embodiments include C, C ++, including various algorithms implemented in combinations of data structures, processes, routines or other programming constructs. It may be implemented in a programming or scripting language such as Java, an assembler, or the like. The functional aspects may be implemented with an algorithm running on one or more processors. In addition, the embodiment may employ the prior art for electronic configuration, signal processing, and / or data processing. Terms such as "mechanism", "element", "means", "configuration" can be used widely and are not limited to mechanical and physical configurations. The term may include the meaning of a series of routines of software in conjunction with a processor or the like.
실시 예에서 설명하는 특정 실행들은 일 실시 예들로서, 어떠한 방법으로도 실시 예의 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다. 또한, "필수적인", "중요하게" 등과 같이 구체적인 언급이 없다면 본 발명의 적용을 위하여 반드시 필요한 구성 요소가 아닐 수 있다.Specific implementations described in the embodiments are examples, and do not limit the scope of the embodiments in any way. For brevity of description, descriptions of conventional electronic configurations, control systems, software, and other functional aspects of the systems may be omitted. In addition, the connection or connection members of the lines between the components shown in the drawings by way of example shows a functional connection and / or physical or circuit connections, in the actual device replaceable or additional various functional connections, physical It may be represented as a connection, or circuit connections. In addition, unless specifically mentioned, such as "essential", "important" may not be a necessary component for the application of the present invention.
실시 예의 명세서(특히 특허청구범위에서)에서 "상기"의 용어 및 이와 유사한 지시 용어의 사용은 단수 및 복수 모두에 해당하는 것일 수 있다. 또한, 실시 예에서 범위(range)를 기재한 경우 상기 범위에 속하는 개별적인 값을 적용한 발명을 포함하는 것으로서(이에 반하는 기재가 없다면), 상세한 설명에 상기 범위를 구성하는 각 개별적인 값을 기재한 것과 같다. 마지막으로, 실시 예에 따른 방법을 구성하는 단계들에 대하여 명백하게 순서를 기재하거나 반하는 기재가 없다면, 상기 단계들은 적당한 순서로 행해질 수 있다. 반드시 상기 단계들의 기재 순서에 따라 실시 예들이 한정되는 것은 아니다. 실시 예에서 모든 예들 또는 예시적인 용어(예들 들어, 등등)의 사용은 단순히 실시 예를 상세히 설명하기 위한 것으로서 특허청구범위에 의해 한정되지 않는 이상 상기 예들 또는 예시적인 용어로 인해 실시 예의 범위가 한정되는 것은 아니다. 또한, 당업자는 다양한 수정, 조합 및 변경이 부가된 특허청구범위 또는 그 균등물의 범주 내에서 설계 조건 및 팩터에 따라 구성될 수 있음을 알 수 있다.In the specification of the embodiments (particularly in the claims), the use of the term “above” and the like indicating term may be used in the singular and the plural. In addition, when the range is described in the examples, the invention includes the invention in which the individual values belonging to the range are applied (unless stated to the contrary). . Finally, if there is no explicit order or contradiction with respect to the steps constituting the method according to the embodiment, the steps may be performed in a suitable order. The embodiments are not necessarily limited according to the description order of the steps. The use of all examples or exemplary terms (eg, etc.) in the embodiments is merely for describing the embodiments in detail, and the scope of the embodiments is limited by the above examples or exemplary terms unless the scope of the claims is defined. It is not. In addition, one of ordinary skill in the art appreciates that various modifications, combinations and changes can be made depending on design conditions and factors within the scope of the appended claims or equivalents thereof.

Claims (15)

  1. 360도 영상에 대한 복수의 모션 벡터를 획득하는 단계;Obtaining a plurality of motion vectors for the 360 degree image;
    필터링을 통해 상기 복수의 모션 벡터 중 상기 360도 영상의 글로벌 회전(global rotation)을 나타내는 적어도 하나의 모션 벡터를 결정하는 단계;Determining at least one motion vector representing a global rotation of the 360 degree image among the plurality of motion vectors through filtering;
    상기 결정된 적어도 하나의 모션 벡터를 3차원 변환하여, 상기 360도 영상에 대한 3차원 회전 정보를 획득하는 단계; 및Obtaining three-dimensional rotation information of the 360 degree image by three-dimensionally transforming the determined at least one motion vector; And
    상기 획득된 3차원 회전 정보를 기초로 흔들림으로 인한 상기 360도 영상의 왜곡을 보정하는 단계를 포함하는, 360도 영상을 처리하는 방법. Correcting the distortion of the 360-degree image due to the shaking based on the obtained three-dimensional rotation information.
  2. 제 1 항에 있어서, 상기 3차원 회전 정보를 획득하는 단계는,The method of claim 1, wherein the obtaining of the 3D rotation information comprises:
    상기 결정된 적어도 하나의 모션 벡터를 특정 방향 및 특정 크기 범위에 대응하는 복수의 빈으로 분류하는 단계;Classifying the determined at least one motion vector into a plurality of bins corresponding to a specific direction and a specific size range;
    상기 분류된 복수의 빈 중 가장 많은 모션 벡터를 포함하는 빈을 선택하는 단계;Selecting a bin containing the most motion vectors of the classified plurality of bins;
    상기 선택된 빈의 방향 및 거리를 변환하여, 상기 3차원 회전 정보를 획득하는 단계를 포함하는, 360도 영상을 처리하는 방법.And converting the direction and distance of the selected bin to obtain the 3D rotation information.
  3. 제 1항에 있어서, 상기 3차원 회전 정보를 획득하는 단계는,The method of claim 1, wherein the obtaining of the 3D rotation information comprises:
    기 생성된 학습 네트워크 모델을 이용하여, 상기 복수의 모션 벡터를 기초로 상기 3차원 회전 정보를 획득하는, 360도 영상을 처리하는 방법. And obtaining the 3D rotation information based on the plurality of motion vectors using a previously generated learning network model.
  4. 제 1 항에 있어서, The method of claim 1,
    촬영 장치를 통해 상기 360도 영상의 촬영 시 발생된 흔들림을 센싱한 결과 생성된 센서 데이터를 획득하는 단계를 더 포함하고, Acquiring sensor data generated as a result of sensing the shaking caused when the 360-degree image is captured by a photographing apparatus;
    상기 360도 영상의 왜곡을 보정하는 단계는, Correcting the distortion of the 360-degree image,
    상기 획득된 센서 데이터와 상기 3차원 회전 정보를 조합하여, 상기 360도 영상의 왜곡을 보정하는, 360도 영상을 처리하는 방법. And combining the obtained sensor data with the 3D rotation information to correct distortion of the 360 degree image.
  5. 하나 이상의 인스트럭션을 저장하는 메모리; 및Memory for storing one or more instructions; And
    상기 메모리에 저장된 상기 하나 이상의 인스트럭션을 실행하는 프로세서를 포함하고, A processor for executing the one or more instructions stored in the memory;
    상기 프로세서는, The processor,
    360도 영상에 대한 복수의 모션 벡터를 획득하고, Acquire a plurality of motion vectors for a 360 degree image,
    필터링을 통해 상기 복수의 모션 벡터 중 상기 360도 영상의 글로벌 회전(global rotation)을 나타내는 적어도 하나의 모션 벡터를 결정하며,Determining at least one motion vector representing a global rotation of the 360 degree image among the plurality of motion vectors by filtering,
    상기 결정된 적어도 하나의 모션 벡터를 3차원 변환하여, 상기 360도 영상에 대한 3차원 회전 정보를 획득하고, 3D transforming the determined at least one motion vector to obtain 3D rotation information of the 360 degree image,
    상기 획득된 3차원 회전 정보를 기초로 흔들림으로 인한 상기 360도 영상의 왜곡을 보정하는, 360도 영상을 처리하는 장치. And correcting the distortion of the 360 degree image due to shaking based on the obtained 3D rotation information.
  6. 제 5 항에 있어서, 상기 프로세서는,The method of claim 5, wherein the processor,
    상기 복수의 모션 벡터 중 상기 프로젝션의 종류에 따라 기 결정된 영역에 포함된 모션 벡터를 제거하는, 360도 영상을 처리하는 장치. And removing a motion vector included in a region determined according to the type of the projection among the plurality of motion vectors.
  7. 제 5 항에 있어서, 상기 프로세서는,The method of claim 5, wherein the processor,
    상기 360도 영상으로부터 검출된 에지를 기초로 마스크를 생성하고,A mask is generated based on the detected edges from the 360 degree image,
    상기 생성된 마스크를 상기 360도 영상에 적용하여, 상기 360도 영상에서 텍스쳐가 존재하지 않는 영역을 결정하며,The generated mask is applied to the 360 degree image to determine an area where no texture exists in the 360 degree image.
    상기 복수의 모션 벡터 중 상기 텍스쳐가 존재하지 않는 영역에 포함된 모션 벡터를 제거하는, 360도 영상을 처리하는 장치. Apparatus for processing a 360-degree image to remove a motion vector included in the region of the plurality of motion vectors, the texture does not exist.
  8. 제 5 항에 있어서, 상기 프로세서는, The method of claim 5, wherein the processor,
    기 설정된 오브젝트 검출 프로세스를 통해 상기 360도 영상으로부터 적어도 하나의 움직이는 오브젝트를 검출하고, At least one moving object is detected from the 360 degree image through a preset object detection process,
    상기 복수의 모션 벡터 중 상기 검출된 오브젝트와 연관된 모션 벡터를 제거하는, 360도 영상을 처리하는 장치.And remove a motion vector associated with the detected object among the plurality of motion vectors.
  9. 제 5 항에 있어서, 상기 프로세서는,The method of claim 5, wherein the processor,
    상기 복수의 모션 벡터 중 상기 360도 영상이 투영된 단위 구(unit sphere) 상의 반대편에 위치한 모션 벡터가 서로 평행하고, 반대 부호를 가지며, 특정 임계값 내의 크기를 갖는 모션 벡터를 상기 글로벌 회전을 나타내는 모션 벡터로 결정하는, 360도 영상을 처리하는 장치. Motion vectors located on opposite sides of the unit sphere from which the 360-degree image is projected among the plurality of motion vectors are parallel to each other, have opposite signs, and represent motion vectors having a magnitude within a specific threshold. Device for processing 360-degree images, determined by motion vectors.
  10. 제 5 항에 있어서, 상기 프로세서는,The method of claim 5, wherein the processor,
    상기 결정된 적어도 하나의 모션 벡터를 특정 방향 및 특정 크기 범위에 대응하는 복수의 빈으로 분류하고,Classify the determined at least one motion vector into a plurality of bins corresponding to a specific direction and a specific size range,
    상기 분류된 복수의 빈 중 가장 많은 모션 벡터를 포함하는 빈을 선택하며,Selecting a bin including the most motion vector among the classified bins,
    상기 선택된 빈의 방향 및 거리를 변환하여, 상기 3차원 회전 정보를 획득하는, 360도 영상을 처리하는 장치.And converting the direction and distance of the selected bin to obtain the 3D rotation information.
  11. 제 10 항에 있어서, 상기 프로세서는,The method of claim 10, wherein the processor,
    상기 선택된 빈과 상기 선택된 빈에 인접한 복수의 빈의 방향 및 거리에 가중 평균을 적용하여, 상기 3차원 회전 정보를 획득하는, 360도 영상을 처리하는 장치. And applying the weighted average to the directions and distances of the selected bin and a plurality of bins adjacent to the selected bin to obtain the three-dimensional rotation information.
  12. 제 5 항에 있어서, 상기 프로세서는,The method of claim 5, wherein the processor,
    상기 결정된 적어도 하나의 모션 벡터의 합을 최소화하는 회전 값을 상기 3차원 회전 정보로 획득하는, 360도 영상을 처리하는 장치. And obtaining a rotation value for minimizing the sum of the determined at least one motion vector as the 3D rotation information.
  13. 제 5 항에 있어서, 상기 프로세서는,The method of claim 5, wherein the processor,
    기 생성된 학습 네트워크 모델을 이용하여, 상기 복수의 모션 벡터를 기초로 상기 3차원 회전 정보를 획득하는, 360도 영상을 처리하는 장치. And obtaining the 3D rotation information based on the plurality of motion vectors using a previously generated learning network model.
  14. 제 5 항에 있어서, 상기 프로세서는,The method of claim 5, wherein the processor,
    촬영 장치를 통해 상기 360도 영상의 촬영 시 발생된 흔들림을 센싱한 결과 생성된 센서 데이터를 획득하고, Acquiring sensor data generated as a result of sensing the shaking generated when the 360-degree image is captured by a photographing device
    상기 획득된 센서 데이터와 상기 3차원 회전 정보를 조합하여, 상기 360도 영상의 왜곡을 보정하는, 360도 영상을 처리하는 장치. And combining the obtained sensor data with the 3D rotation information to correct distortion of the 360 degree image.
  15. 제 1항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.A computer-readable recording medium having recorded thereon a program for executing the method of claim 1 on a computer.
PCT/KR2018/005440 2017-05-18 2018-05-11 Method and apparatus for processing 360-degree image WO2018212514A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US16/606,004 US20210142452A1 (en) 2017-05-18 2018-05-11 Method and apparatus for processing 360-degree image
DE112018002554.3T DE112018002554T5 (en) 2017-05-18 2018-05-11 Method and device for processing a 360-degree image
CN201880032626.7A CN110622210A (en) 2017-05-18 2018-05-11 Method and apparatus for processing 360 degree images

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
GB1708001.1 2017-05-18
GB1708001.1A GB2562529B (en) 2017-05-18 2017-05-18 Method and apparatus for stabilising 360 degree video
KR1020180045741A KR102444292B1 (en) 2017-05-18 2018-04-19 Method and apparatus for processing 360 degree image
KR10-2018-0045741 2018-04-19

Publications (1)

Publication Number Publication Date
WO2018212514A1 true WO2018212514A1 (en) 2018-11-22

Family

ID=64274188

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2018/005440 WO2018212514A1 (en) 2017-05-18 2018-05-11 Method and apparatus for processing 360-degree image

Country Status (1)

Country Link
WO (1) WO2018212514A1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005056295A (en) * 2003-08-07 2005-03-03 Iwane Kenkyusho:Kk 360-degree image conversion processing apparatus
US20070286286A1 (en) * 2006-04-21 2007-12-13 Dilithium Holdings, Inc. Method and System for Video Encoding and Transcoding
KR20070119525A (en) * 2006-06-14 2007-12-20 소니 가부시끼가이샤 Image processsing device, image processing method, image pickup device, and image pickup method
KR101137107B1 (en) * 2003-12-09 2012-07-02 마이크로소프트 코포레이션 System and method for accelerating and optimizing the processing of machine learning techniques using a graphics processing unit

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005056295A (en) * 2003-08-07 2005-03-03 Iwane Kenkyusho:Kk 360-degree image conversion processing apparatus
KR101137107B1 (en) * 2003-12-09 2012-07-02 마이크로소프트 코포레이션 System and method for accelerating and optimizing the processing of machine learning techniques using a graphics processing unit
US20070286286A1 (en) * 2006-04-21 2007-12-13 Dilithium Holdings, Inc. Method and System for Video Encoding and Transcoding
KR20070119525A (en) * 2006-06-14 2007-12-20 소니 가부시끼가이샤 Image processsing device, image processing method, image pickup device, and image pickup method

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SEO, YEONG GEON ET AL.: "JA Generation of ROI Mask and an Automatic Extraction of ROI Using Edge Distribution of JPEG2000 Image", JOURNAL OF DIGITAL CONTENTS SOCIETY, vol. 16, no. 4, 31 August 2015 (2015-08-31), pages 583 - 593, Retrieved from the Internet <URL:http://koteascience.ot.kr/at1icie/ArticleFuliRecord.jsp?cn=DGTCBD2015_v16n4_583> *

Similar Documents

Publication Publication Date Title
WO2020032354A1 (en) Method, storage medium and apparatus for converting 2d picture set to 3d model
WO2015194864A1 (en) Device for updating map of mobile robot and method therefor
WO2015194867A1 (en) Device for recognizing position of mobile robot by using direct tracking, and method therefor
WO2015194865A1 (en) Device and method for recognizing location of mobile robot by means of search-based correlation matching
WO2020071839A1 (en) Ship and harbor monitoring device and method
WO2015194866A1 (en) Device and method for recognizing location of mobile robot by means of edge-based readjustment
WO2015194868A1 (en) Device for controlling driving of mobile robot having wide-angle cameras mounted thereon, and method therefor
WO2018093100A1 (en) Electronic apparatus and method for processing image thereof
WO2012064106A2 (en) Method and apparatus for video stabilization by compensating for view direction of camera
US20110096143A1 (en) Apparatus for generating a panoramic image, method for generating a panoramic image, and computer-readable medium
WO2021045599A1 (en) Method for applying bokeh effect to video image and recording medium
WO2020027519A1 (en) Image processing device and operation method therefor
WO2020091262A1 (en) Method for processing image by using artificial neural network, and electronic device supporting same
US10861185B2 (en) Information processing apparatus and method of controlling the same
WO2021085757A1 (en) Video frame interpolation method robust against exceptional motion, and apparatus therefor
WO2020013631A1 (en) Method and device for encoding three-dimensional image, and method and device for decoding three-dimensional image
EP3935562A1 (en) Electronic device and method for assisting with driving of vehicle
WO2020101420A1 (en) Method and apparatus for measuring optical characteristics of augmented reality device
WO2019142997A1 (en) Apparatus and method for compensating for image change caused by optical image stabilization motion
WO2016126083A1 (en) Method, electronic device, and recording medium for notifying of surrounding situation information
WO2021246822A1 (en) Method and apparatus for improving object image
KR20180127185A (en) Method and apparatus for processing 360 degree image
WO2018212514A1 (en) Method and apparatus for processing 360-degree image
WO2019017720A1 (en) Camera system for protecting privacy and method therefor
WO2019194544A1 (en) Method and system for handling 360 degree image content

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: 18801440

Country of ref document: EP

Kind code of ref document: A1

122 Ep: pct application non-entry in european phase

Ref document number: 18801440

Country of ref document: EP

Kind code of ref document: A1