WO2017142182A1 - 이미지 처리 방법 및 이를 지원하는 전자 장치 - Google Patents

이미지 처리 방법 및 이를 지원하는 전자 장치 Download PDF

Info

Publication number
WO2017142182A1
WO2017142182A1 PCT/KR2016/015136 KR2016015136W WO2017142182A1 WO 2017142182 A1 WO2017142182 A1 WO 2017142182A1 KR 2016015136 W KR2016015136 W KR 2016015136W WO 2017142182 A1 WO2017142182 A1 WO 2017142182A1
Authority
WO
WIPO (PCT)
Prior art keywords
image
content generation
electronic device
area
processor
Prior art date
Application number
PCT/KR2016/015136
Other languages
English (en)
French (fr)
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
Application filed by 삼성전자 주식회사 filed Critical 삼성전자 주식회사
Priority to CN201680079997.1A priority Critical patent/CN108605100A/zh
Priority to US16/073,378 priority patent/US10868959B2/en
Priority to EP16890772.3A priority patent/EP3399742B1/en
Publication of WO2017142182A1 publication Critical patent/WO2017142182A1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/222Studio circuitry; Studio devices; Studio equipment
    • H04N5/262Studio circuits, e.g. for mixing, switching-over, change of character of image, other special effects ; Cameras specially adapted for the electronic generation of special effects
    • H04N5/272Means for inserting a foreground image in a background image, i.e. inlay, outlay
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/698Control of cameras or camera modules for achieving an enlarged field of view, e.g. panoramic image capture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4038Image mosaicing, e.g. composing plane images from plane sub-images
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/62Control of parameters via user interfaces
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/95Computational photography systems, e.g. light-field imaging systems
    • H04N23/951Computational photography systems, e.g. light-field imaging systems by using two or more images to influence resolution, frame rate or aspect ratio
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/765Interface circuits between an apparatus for recording and another apparatus
    • H04N5/77Interface circuits between an apparatus for recording and another apparatus between a recording apparatus and a television camera
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/91Television signal processing therefor
    • H04N5/917Television signal processing therefor for bandwidth reduction
    • H04N5/919Television signal processing therefor for bandwidth reduction by dividing samples or signal segments, e.g. television lines, among a plurality of recording channels

Definitions

  • Various embodiments relate to image processing.
  • the electronic device may acquire an image through a camera or the like.
  • the electronic device may encode and store the obtained image in a specified manner.
  • Various embodiments provide an image processing method and an electronic device supporting the same that enable efficient encoding in an image processing process.
  • an electronic device may include a memory configured to store at least one command related to the collected image encoding, and a processor electrically connected to the memory, wherein the command performed during execution of the processor may generate a designated content.
  • each of the partial regions of the stitched image may be set to be parallel encoded in a designated block unit.
  • an image processing method divides an allocated content generation buffer into a plurality of partial regions by a processor of an electronic device, and overlaps a received current image with a previous image. Stitching the previous image and the current image based on a region; and if the stitched images are stored in the content generation buffer, performing parallel encoding for each of the partial regions of the stitched image on a predetermined block basis. Can be.
  • the various embodiments partially divide the stitched images and then perform parallel encoding on each part, thereby supporting efficient encoding.
  • FIG. 1 is a diagram illustrating an example of an operating environment of an electronic device according to an embodiment of the present disclosure.
  • FIG. 2 is a diagram illustrating an example of a processor according to an exemplary embodiment of the present invention.
  • FIG. 3 is a diagram illustrating an image processing method according to an exemplary embodiment of the present invention.
  • FIG. 4 is a diagram illustrating another example of an image processing method according to an exemplary embodiment.
  • FIG. 5 is a diagram illustrating memory operation according to an exemplary embodiment of the present invention.
  • FIG. 6 is a diagram illustrating an interface relating to image acquisition of an electronic device according to an embodiment of the present disclosure.
  • FIG. 7 is a diagram illustrating an interface related to image reproduction of an electronic device according to an embodiment of the present disclosure.
  • FIG. 8 is a block diagram of an electronic device according to various embodiments of the present disclosure.
  • FIG. 9 is a block diagram of a program module according to various embodiments of the present disclosure.
  • expressions such as “have”, “may have”, “include”, or “may contain” include the presence of a corresponding feature (e.g., numerical, functional, operational, or component such as a component). Does not exclude the presence of additional features.
  • expressions such as “A or B”, “at least one of A or / and B”, or “one or more of A or / and B” may include all possible combinations of items listed together.
  • “A or B”, “at least one of A and B”, or “at least one of A or B” includes (1) at least one A, (2) at least one B, Or (3) both of cases including at least one A and at least one B.
  • Expressions such as “first,” “second,” “first,” or “second,” used in various embodiments may modify various elements in any order and / or importance, and may modify the elements. It is not limited. The above expressions may be used to distinguish one component from another.
  • the first user device and the second user device may represent different user devices regardless of the order or importance.
  • the first component may be referred to as a second component, and similarly, the second component may be renamed to the first component.
  • One component (such as a first component) is "(functionally or communicatively) coupled with / to" to another component (such as a second component) or " When referred to as “connected to”, it should be understood that any component may be directly connected to the other component or may be connected through another component (eg, a third component).
  • a component e.g., a first component
  • another component e.g., a second component
  • the expression “configured to” used in this document is, for example, “suitable for”, “having the capacity to” depending on the situation. It may be used interchangeably with “designed to”, “adapted to”, “made to”, or “capable of”.
  • the term “configured to” may not necessarily mean only “specifically designed to” in hardware. Instead, in some situations, the expression “device configured to” may mean that the device “can” along with other devices or components.
  • the phrase “processor configured (or set up) to perform A, B, and C” may execute a dedicated processor (eg, an embedded processor) to perform the operation, or one or more software programs stored in a memory device. By doing so, it may mean a general-purpose processor (for example, a CPU or an application processor) capable of performing the corresponding operations.
  • the electronic device may be a smartphone, a tablet personal computer, a mobile phone, a video phone, or an e-book reader.
  • reader desktop PC, laptop PC, netbook computer, workstation, server, PDA (personal digital assistant), portable multimedia player (PMP), MP3 player, mobile Medical devices, cameras, or wearable devices (e.g. smart glasses, head-mounted-device (HMD)), electronic clothing, electronic bracelets, electronic necklaces, electronic accessories, electronic It may include at least one of a tattoo, a smart mirror, or a smart watch.
  • the electronic device may be a smart home appliance.
  • Smart home appliances are, for example, televisions, DVD players, audio, refrigerators, air conditioners, cleaners, ovens, microwave ovens, washing machines, air purifiers, set-top boxes, home automation control panels.
  • control panel security control panel
  • TV box e.g. Samsung HomeSync TM, Apple TV TM, or Google TV TM
  • game console e.g. Xbox TM, PlayStation TM
  • electronic dictionary e.g. Sony PlayStation TM
  • electronic key It may include at least one of a camcorder or an electronic picture frame.
  • the electronic device may include various medical devices (eg, various portable medical measuring devices (such as blood glucose meters, heart rate monitors, blood pressure monitors, or body temperature meters), magnetic resonance angiography (MRA), magnetic resonance imaging (MRI), Such as CT (computed tomography, imaging or ultrasound), navigation devices, global positioning system receivers, event data recorders, flight data recorders, automotive infotainment devices, ships Electronic equipment (e.g., ship navigation devices, gyro compasses, etc.), avionics, security devices, vehicle head units, industrial or household robots, automatic teller's machines (financial institutions), point of sale (POS) stores (point of sales) or Internet of things (e.g. light bulbs, sensors, electrical or gas meters, sprinkler devices, fire alarms, thermostats, street lights, toasters, Exercise equipment, hot water tank, heater, boiler, and the like.
  • various medical devices e.g, various portable medical measuring devices (such as blood glucose meters, heart rate monitors, blood pressure monitors, or body temperature meters), magnetic
  • an electronic device may be a furniture or part of a building / structure, an electronic board, an electronic signature receiving device, a projector, or various measuring devices (eg, Water, electricity, gas, or radio wave measuring instrument).
  • the electronic device may be one or a combination of the aforementioned various devices.
  • An electronic device according to an embodiment may be a flexible electronic device.
  • the electronic device according to an embodiment of the present disclosure is not limited to the above-described devices, and may include a new electronic device according to technology development.
  • the term user may refer to a person who uses an electronic device or a device (eg, an artificial intelligence electronic device) that uses an electronic device.
  • FIG. 1 is a diagram illustrating an example of an operating environment of an electronic device according to an embodiment of the present disclosure.
  • an electronic device operating environment may include, for example, the electronic device 100, the external electronic devices 101 and 102, the network 162, the server 106, and the like.
  • the electronic device operating environment described above supports the electronic device 100 to obtain an image from the external electronic devices 101 and 102 or the server 106.
  • the electronic device 100 may transmit the imaged content to the external electronic device 101 or 102 or the server 106 according to an embodiment of the present disclosure.
  • the electronic device 100, the external electronic devices 101 and 102, or the server 106 may be connected to each other through the network 162 or the short-range communication 164.
  • the electronic device operating environment related to image processing may be an external electronic device ( 101, 102, the network 162, the server 106, and the like may be omitted, and the electronic device 100 may be configured only.
  • the electronic device 100 may include a bus 110, a processor 120, a memory 130, an input / output device 150, an display 160, and a communication interface 170. Or communication circuitry) and a camera 180.
  • the bus 110 includes components of the electronic device 100 (eg, the processor 120, the memory 130, the input / output interface 150, the display 160, the communication interface 170, and the camera 180). Signal transmission can be performed. For example, the bus 110 transmits at least one image collected by the camera 180 to the processor 120, and transmits the content processed by the processor 120 to at least one of the memory 130 or the display 160. You can pass on one. Alternatively, the bus 110 may transfer the content processed by the processor 120 to the communication interface 170 which has established a communication channel with the external electronic devices 101 and 102 or the server 106.
  • the bus 110 may transfer the content processed by the processor 120 to the communication interface 170 which has established a communication channel with the external electronic devices 101 and 102 or the server 106.
  • the processor 120 may include, for example, one or more of a central processing unit (CPU), an application processor (AP), or a communication processor (CP).
  • the processor 120 may execute an operation or data processing related to control and / or communication of at least one other component of the electronic device 100.
  • the processor 120 The camera 180 may be activated in response to a user input and the content may be generated based on a plurality of images acquired by the camera 180. For example, the processor 120 may stitch the plurality of images.
  • Matching destinations based on processing e.g., similar areas of at least two images of a plurality of images (e.g., edge areas between successive frames when performing continuous shooting) And perform (for example, to attach region and attaching at least one treatment zone in the blending process for blending the periphery of), in sequence encoding: may be carried out (for example, JPEG encoding or JPEG compression).
  • the processor 120 When the image collection is completed, the processor 120 generates a single content (eg, a panoramic image) by integrating sequentially compressed regions, and stores the generated content in the memory 130 or the display 160. You can print In the above-described operation, the processor 120 divides the input image into partial regions of a predetermined size (for example, regions corresponding to rows or columns divided by dividing a predetermined number of pixels into one group). Each partial region may be parallel encoded in a predetermined block unit (eg, at least one encoding unit block and at least one partial region). The processor 120 may determine the size of the partial regions according to the size of the encoding unit block or the size of the content to be generated.
  • a predetermined size for example, regions corresponding to rows or columns divided by dividing a predetermined number of pixels into one group.
  • Each partial region may be parallel encoded in a predetermined block unit (eg, at least one encoding unit block and at least one partial region).
  • the processor 120 may determine the size of the partial regions according to the
  • the memory 130 may include a volatile and / or nonvolatile memory.
  • the memory 130 may store, for example, commands or data related to at least one other element of the electronic device 100.
  • the memory 130 may store software and / or a program 140.
  • the program 140 may be, for example, a kernel 141, middleware 143, an application programming interface (API) 145, an application program (or “application”) 147, or the like. It may include. At least a portion of kernel 141, middleware 143, or API 145 may be referred to as an operating system (OS).
  • OS operating system
  • the kernel 141 may be a system resource (eg, used to execute an action or function implemented in, for example, other programs (eg, middleware 143, API 145, or application program 147).
  • the bus 110, the processor 120, or the memory 130 may be controlled or managed.
  • the kernel 141 may provide an interface for controlling or managing system resources by accessing individual components of the electronic device 100 from the middleware 143, the API 145, or the application program 147. Can be.
  • the middleware 143 may serve as an intermediary for allowing the API 145 or the application program 147 to communicate with the kernel 141 to exchange data.
  • the middleware 143 may process one or more work requests received from the application program 147 according to priority.
  • the middleware 143 may use system resources (eg, the bus 110, the processor 120, or the memory 130, etc.) of the electronic device 100 for at least one of the application programs 147. Priority can be given.
  • the middleware 143 may perform the scheduling or load balancing of the one or more work requests by processing the one or more work requests according to the priority given to the at least one.
  • the API 145 is, for example, an interface for the application 147 to control a function provided by the kernel 141 or the middleware 143, for example, file control, window control, image processing, or text. It may include at least one interface or function (eg, a command) for control.
  • the memory 130 may store at least one image collected by the camera 180.
  • the memory 130 may store content (for example, a panoramic image) to which a plurality of images are joined.
  • the memory 130 may include a content generation buffer (or buffer memory) having a predetermined size in which at least some of the plurality of images are stored.
  • the content generation buffer having a predetermined size may be divided into a plurality of partial regions.
  • the content generation buffer may include a plurality of partial regions in which one side is divided into a predetermined size, and the partial regions may include a predetermined number of pixels.
  • one partial region may have a small region corresponding to at least one encoding unit block, and one encoding unit block may include a predetermined number of pixels (eg, 16 * 16).
  • the size between the partial regions may be the same or similar.
  • the content generation buffer may be used for stitching images having the same or similar regions and encoding the stitched images.
  • the stitched and encoded regions disposed in the content generation buffer may be integrated at the end of image collection and converted into a single content (eg, a panoramic image encoded in a specified manner).
  • the input / output interface 150 may serve as, for example, an interface capable of transferring a command input from a user or data input from another external device to other component (s) of the electronic device 100.
  • the input / output interface 150 may output commands or data received from other component (s) of the electronic device 100 to a user or another external device.
  • the input / output interface 150 may include an input signal related to activation of the camera 180, an input signal for requesting generation of a content of a specified method or selecting a specified method, an input signal for requesting storage or output of content, An input signal or the like related to reproduction control of the output content may be generated in response to a user input.
  • the input / output interface 150 may include an audio device.
  • the audio device may output at least one audio information related to the operation of the camera 180 (eg, pre-stored guide information or an effect sound related to photographing the camera 180).
  • the audio device may collect an audio signal when operating the camera 180.
  • the display 160 may be, for example, a liquid crystal display (LCD), a light-emitting diode (LED) display, an organic light emitting diode (OLED) display, or a microelectromechanical. Microelectromechanical systems (MEMS) displays, or electronic paper displays.
  • the display 160 may display, for example, various contents (eg, text, images, videos, icons, symbols, etc.) to the user.
  • the display 160 may include a touch screen and, for example, may receive a touch, gesture, proximity, or hovering input using an electronic pen or a part of a user's body.
  • the display 160 may include a user interface related to activation of the camera 180 (eg, a camera application execution screen), a user interface related to content collection in a specified manner, and a specified scheme generated based on a plurality of images.
  • a user interface related to storing or outputting content may be output.
  • the communication interface 170 may establish communication between the electronic device 100 and an external device (for example, the second electronic device 102 or the server 106).
  • the communication interface 170 may be connected to the network 162 through wireless or wired communication to communicate with an external device (eg, the second electronic device 102 or the server 106).
  • Wireless communication is, for example, a cellular communication protocol, and includes Long-Term Evolution (LTE), LTE-Advanced (LTE-A), Code Division Multiple Access (CDMA), Wideband CDMA (WCDMA), and Universal Mobile Telecommunications System (UMTS).
  • LTE Long-Term Evolution
  • LTE-A Long-Term Evolution
  • CDMA Code Division Multiple Access
  • WCDMA Wideband CDMA
  • UMTS Universal Mobile Telecommunications System
  • WiBro Wireless Broadband
  • GSM Global System for Mobile Communications
  • the communication interface 170 may include a short range communication module (eg, BT, WIFI communication hardware interface) that may communicate with the first electronic device 101.
  • the communication interface 170 may include at least one communication module capable of performing Near Field Communication (NFC), magnetic stripe transmission (MST), scanner communication, or the like.
  • the communication interface 170 may display content (eg, JPEG panoramic image) encoded in a designated manner in response to the control of the processor 120. 2 to the electronic device 102 and the server 106.
  • the camera 180 may be activated in response to a user input or a setting of an electronic device, and may acquire an image related to a subject.
  • the camera 180 may transfer the acquired image to the processor 120.
  • the camera 180 may collect a plurality of images in response to a user input or may automatically collect a plurality of images at a predetermined period.
  • the camera 180 may sequentially transmit the plurality of images photographed continuously or the plurality of images photographed continuously in sequence to the processor 120 in response to a user input.
  • the camera 180 may acquire images of several frames or tens of frames per second and transfer the acquired images to the processor 120 sequentially or in real time.
  • the camera 180 is illustrated as being included in the electronic device 100, but the present invention is not limited thereto.
  • the camera 180 may be provided in an independent configuration from the electronic device 180, and may transmit a plurality of images captured or stored to the electronic device 180 through a communication interface.
  • the camera 180 may transmit the acquired at least one image and the obtained at least one preview image to the electronic device 100 based on the Bluetooth communication interface.
  • the processor 120 of the electronic device 100 may generate content (for example, the panoramic image described below) of a specified method based on the images transmitted by the camera.
  • the processor 120 of the electronic device 100 may perform sequential buffering, stitching, or encoding on the plurality of received images.
  • the processor 120 of the electronic device 100 may select and operate an image having a range of a similar area within a predetermined range among the plurality of images.
  • Each of the first and second external electronic devices 101 and 102 may be the same or different type of device as the electronic device 100.
  • the server 106 may include a group of one or more servers.
  • all or part of operations executed in the electronic device 100 may be executed in another or a plurality of electronic devices (for example, the electronic devices 101 and 102 or the server 106).
  • the electronic device 100 may instead of or execute the function or service by itself, and At least some associated functions may be requested to another device (for example, the electronic devices 101 and 102 or the server 106).
  • the other electronic device may execute the requested function or the additional function and transmit the result to the electronic device 100.
  • the electronic device 100 may process the received result as it is or additionally to provide the requested function or service.
  • cloud computing, distributed computing, or client-server computing technology may be used.
  • FIG. 2 is a diagram illustrating an example of a processor according to an exemplary embodiment of the present invention.
  • the processor 120 may include an image signal processing module 121 (eg, an image signal processor (ISP), an input buffer management module 123, a content generation module 125, The encoder 129 may include an output processing module 127. Modules included in the above-described processor 120 may be implemented with at least one hardware element or at least one software module.
  • ISP image signal processor
  • the encoder 129 may include an output processing module 127. Modules included in the above-described processor 120 may be implemented with at least one hardware element or at least one software module.
  • the image signal processing module 121 may receive an image collected by the camera 180.
  • the image signal processing module 121 is a hardware module that post-processes an image received from the camera 180 and may be included in the camera 180 or the processor 120.
  • the image signal processing module 121 may transfer the image received from the camera 180 to the input buffer management module 123.
  • the input buffer management module 123 may manage an image transmitted by the image signal processing module 121 as a stream.
  • the input buffer management module 123 may manage a frame buffer associated with a plurality of images.
  • the input buffer management module 123 may manage a frame buffer in the form of a ring buffer.
  • the input buffer management module 123 may deliver an image (eg, an image stored in a buffer) to the content generation module 125 or the output processing module 127.
  • the input buffer management module 123 may transfer data related to a user interface to the output processing module 127.
  • the content generation module 125 may allocate a buffer for generating content (eg, a panoramic image). According to an embodiment of the present disclosure, the content generation module 125 may acquire direction information (or photographing direction information) for continuously obtaining an image in relation to content generation in a specified manner. For example, the content generation module 125 may obtain movement direction information of the electronic device 100 using at least one sensor. In this regard, the electronic device 100 may include at least one sensor (eg, an acceleration sensor, a geomagnetic sensor) related to the movement direction detection. Alternatively, the content generation module 125 may obtain movement direction information of the electronic device 100 based on the received image analysis.
  • a sensor eg, an acceleration sensor, a geomagnetic sensor
  • the content generation module 125 may compare images acquired for a specified time to determine direction information, or compare an image of a specific view point and an image after the specific view point, and determine whether the electronic device 100 is based on the image change. It can be determined whether the direction is moved. For example, the content generation module 125 may extract feature points commonly included in the previous image and the subsequent image, and determine a change in direction based on at least a part of the moving direction of the feature points.
  • the content generation module 125 may allocate a content generation buffer corresponding to the determined direction when the direction in which the image is continuously obtained is determined. According to an embodiment of the present disclosure, the content generation module 125 may differently allocate the size of the content generation buffer in the first direction (eg, left and right directions) and the size of the content generation buffer in the second direction (eg, up and down directions). Can be. For example, the content generation module 125 may allocate the size of the content generation buffer associated with the first direction to be larger than the size of the content generation buffer associated with the second direction.
  • the content generation module 125 divides one side of the allocated content generation buffer into a predetermined size and a predetermined number of encoding unit blocks, or a plurality of partial regions (for example, a plurality of encoding unit blocks in one partial region). Can be divided into The size of the plurality of partial regions may vary depending on the size of the image to be encoded.
  • Images stored in the plurality of partial regions may be parallel encoded.
  • the images stored in the content generation buffer may be encoded in units of blocks designated in partial regions in one direction. For example, if an image is 3840 pixels wide and the encoding unit block is 16 * 16, the content generation module 125 may divide the image into 240 (3840/16) small region areas. The content generation module 125 may designate a certain number of subregions (for example, 40 subregions) as a partial region, and allocate an image disposed in the designated partial regions to a predetermined number of threads. . The number of threads may vary corresponding to the number of partial regions. In this operation, the content generation module 125 may adjust the number of threads to process in parallel according to the performance of the process.
  • the content generation module 125 may allocate partial areas so that each thread processes 40 small areas. Alternatively, the content generation module 125 may process to handle more small areas in a thread where data processing is completed relatively faster than other threads. According to various embodiments of the present disclosure, in relation to generating a content (eg, a panoramic image) of a specified method, as described above, the 240 small partial regions may be processed in units of six partial regions through six threads as described above. .
  • the content generation module 125 may encode images (eg, 220) for a small area smaller than 240 actually.
  • the content generation module 125 may allocate and process appropriately (e.g., equal or unequal according to the data processing format supported by the operating system) for a specified number (e.g., six) of the 220 small sub-areas. have.
  • the content generation module 125 may analyze and stitch the images provided by the input buffer management module 123. For example, the content generation module 125 compares at least some regions of the previous image with at least some regions of the current image, extracts regions having high similarity or the same feature points, and based on the extracted regions, the previous image and the current image. Can be stitched. According to an embodiment of the present disclosure, when it is determined that the content generation module 125 acquires images in the first direction, the content generation module 125 may compare the similarity between the partial region of the right side (or the left side) of the previous image and the partial region of the left side (or the right side) of the current image. have.
  • the content generation module 125 may compare the similarity between the partial region of the right (or left) edge of the previous image and the partial region of the left (or right) edge of the current image. If it is determined that the content generation module 125 acquires images in the second direction, the content generation module 125 may compare the similarity between the upper (or lower) partial region of the previous image and the lower (or upper) partial region of the current image. The content generation module 125 may overlap and arrange areas having a high similarity among the previous image area and the current image area, and successively overlap the next image areas. The content generation module 125 may perform a blending process (eg, color processing to reduce the difference between different images) as necessary at the boundary between the previous image and the current image.
  • a blending process eg, color processing to reduce the difference between different images
  • the content generation module 125 may determine a similar area ratio of the acquired images and determine whether to stitch the images based on the similar area ratio. For example, the content generation module 125 may not use the current image for stitching when the ratio of the similar area between the previous image and the current image is equal to or greater than a specified ratio (eg, an image area to be expanded by stitching when a relatively large area is similar). This is relatively absent. Alternatively, the content generation module 125 may select an image having a similar area range of a predetermined ratio (eg, 30%, 40%, 50%, etc.) from the previous image after the previous image stored in the content generation buffer. You can stitch with the previous image. Selecting the images to be stitched may be performed, for example, in the input buffer management module 123.
  • a specified ratio eg, an image area to be expanded by stitching when a relatively large area is similar. This is relatively absent.
  • the content generation module 125 may select an image having a similar area range of a predetermined ratio (eg, 30%, 40%, 50%
  • the content generation module 125 may support encoding by providing information on a portion to be stitched to the encoder 129. According to various embodiments of the present disclosure, the content generation module 125 may obtain information about block regions encoded by the encoder 129, and calculate boundary regions to be stitched to the next image based on the obtained block regions. have. When the image collection is completed, the content generation module 125 may control a content integration process according to the completion of image collection. For example, when the image collection is completed, the content generation module 125 may request the encoder 129 to integrate the encoded blocks.
  • the encoder 129 may encode the image transmitted by the content generation module 125 into content (eg, JPEG panoramic image) in a designated manner.
  • the encoder 129 may operate independently of the output processing module 127, so that the encoder 129 performs encoding by performing an encoding while a preview is performed on the display 160 by the output processing module 127. Can be generated quickly.
  • the encoder 129 may allocate a plurality of threads corresponding to the partial regions divided in a predetermined direction to the content generation buffer, and perform parallel encoding for simultaneously encoding the plurality of threads. In this case, the encoder 129 may encode partial regions of the images allocated to each thread in block units having a predetermined size.
  • the encoder 129 may be assigned a specified number (eg, processor supported) of 40 sub-regions of data (e.g., when a pixel is 3840) based on 16 * 16 encoding unit blocks. Subregions) can be encoded in parallel.
  • the encoder 129 may perform encoding for each stitching process of consecutively received images.
  • the encoder 129 may encode the block disposed in the first region among the partial regions of the next image by referring to the encoded block disposed in the last region of the partial regions of the previous image.
  • the encoding unit block having the designated size may be changed to various sizes based on the setting of the encoder 129.
  • the encoder 129 When the encoder 129 receives the end of image collection from the content generation module 125, the encoder 129 allocates a header (e.g. JPEG header) for the content and assigns an identifier (e.g., restarter) in the last area of the partial regions of the encoded images. ) Can be entered. Alternatively, the encoder 129 may write an end identifier (eg, end of indicator) for indicating the last encoding block of the content. The designated identifier may indicate that encoding is performed in corresponding partial regions. Accordingly, while the corresponding content is reproduced, decoding may be performed for each partial region, and the decoded image may be output to the display 160 or the like.
  • a header e.g. JPEG header
  • an identifier e.g., restarter
  • the encoder 129 may write an end identifier (eg, end of indicator) for indicating the last encoding block of the content.
  • the designated identifier may indicate that en
  • the output processing module 127 may perform a process for outputting the image received from the input buffer management module 123 to the display 160.
  • the output processing module 127 may generate a buffer of an image to be output to the display 160 in preview form.
  • the output processing module 127 merges the image and the user interface coming from the input buffer management module 123 and the content provided by the content generation module 125 and stores them in an image buffer (eg, stored in the image buffer).
  • the image can be output to the display.
  • the output processing module 127 may be included in a hardware compositor, a GPU, etc. in addition to the processor 120 to perform processing related to image output.
  • an electronic device may include a memory configured to store at least one instruction related to the collected image encoding, a processor electrically connected to the memory, and the processor performed during execution of the processor.
  • the command divides the allocated content generation buffer into a plurality of partial regions in association with a specified content generation, stitches the previous image and the current image based on overlapping regions of the received current image and the previous image, and stitches the stitches.
  • each of the partial regions of the stitched image may be set to be encoded in parallel in a specified encoding unit block size and a specified number unit.
  • the command executed during the execution of the processor may determine the image acquisition direction related to the content generation based on the change in the received preview images, or use the at least one sensor to generate the image related to the content. It can be set to determine the acquisition direction.
  • the command executed during the execution of the processor may be set to allocate a content generation buffer having a different size according to the shooting direction.
  • the command executed during the execution of the processor allocates a content generation buffer having a first length in a first direction and a second length in a second direction corresponding to a first shooting direction, or a second shooting direction.
  • the content generation buffer having a third length smaller than the first length in a first direction and having a second length in a second direction may be configured to correspond to the first direction.
  • the command executed during the execution of the processor may be configured to output the obtained image to the background area of the display and to overlay the stitched image on the background area.
  • the command executed during the execution of the processor may be set to output a preview area having a ratio corresponding to the entire size of the content generation buffer to the display during the image collection or after the image collection is completed.
  • the command executed during the execution of the processor may be set to output the preview area including a stitching area corresponding to the stitched image and a remaining area corresponding to the entire size of the content generation buffer.
  • the instruction executed during the execution of the processor may instruct the last block of each of the partial regions not to be used for processing the first block of the other partial region.
  • the command executed during the execution of the processor may be configured to select and stitch an image having a region similar to the previous image within a predetermined range among a plurality of received images.
  • the command executed during the execution of the processor may be configured to exclude the current image area having a different height from the previous image when the image is stitched from the buffering of the content generation buffer.
  • FIG. 3 is a diagram illustrating an image processing method according to an exemplary embodiment of the present invention.
  • the processor 120 may perform input event processing related to an image acquisition function in operation 301. have. If the user input is not related to the image collection function, in operation 303, the processor 120 may process a function corresponding to the type of the user input. For example, the processor 120 may perform a call function or receive an image from the server 106 or the external electronic devices 101 and 102 according to the type of the user input.
  • the processor 120 may activate the camera 180 in operation 305.
  • the processor eg, the input buffer management module 123 or the output processing module 127) may output a designated user interface after the camera 180 is activated.
  • the designated user interface may include, for example, a user interface related to generation of designated content (eg, panorama image generation).
  • the processor 120 may determine whether an image is collected (eg, transferred from the camera 180).
  • the processor 120 eg, the input buffer management module 123 may receive the image transmitted by the camera 180 and maintain the received image in the form of a stream.
  • the processor 120 eg, the content generation module 125
  • the processor 120 may allocate a content generation buffer.
  • the processor 120 may divide the content generation buffer into partial regions of a predetermined size. For example, the processor 120 may divide the content generation buffer into a plurality of columns based on a direction in which at least some of the images are continuously stored.
  • the processor may perform an image stitching process.
  • the processor 120 may store the received image in the content generation buffer allocated to the designated size.
  • the content generation module 125 may perform an image stitching process between the collected image and the previous image. For example, the content generation module 125 may select an image within a range in which a similar region is specified while having a predetermined similarity with the previous image among the plurality of images received after the first acquired image or the previously stitched image. Based on this, the content generation module 125 does not use similar images for stitching, but rather uses images with an appropriate range of similar regions, thereby reducing the amount of computation (eg, fewer times of image comparison, selection) And color processing in the boundary region between the images).
  • the processor 120 may perform parallel encoding.
  • the encoder 129 may perform parallel encoding for each partial region of the images stored in the content generation buffer.
  • the encoder 129 may encode the newly stitched current image regions in parallel for each partial region.
  • the partial region may include at least one small region corresponding to the encoding unit block. The number of subregions in a partial region may vary depending on the size of the image to be encoded, the performance of the processor, and the performance of the allocated threads.
  • the encoder 129 may encode the start block of the newly stitched current image areas with reference to the last block of the previous image area.
  • the processor 120 may check whether the image collection is finished. If the image acquisition is not finished, the processor 120 (eg, the image signal processing module 121, the input buffer management module 123, and the content generation module 125) branches to operation 307 to re-execute the following operation. Can be.
  • the image signal processing module 121 may receive an image from the camera 180 and transmit the image to the input buffer management module 123, and the input buffer management module 123 may deliver the received image to the content generation module 125. Can be.
  • the processor may perform image integration processing.
  • the processor 120 may create a header (eg, a JPEG header) for designated blocks included in each partial region, and place the created header in front of data related to the corresponding content.
  • the processor 120 may define encoded blocks for each of the partial regions in the content generation buffer and place an identifier (eg, a restarter) designated at the last portion of the partial regions.
  • the designated identifier can be used to instruct to independently process block reproduction in the start area of the next subregion without referring to the block placed in the last area of the previous subregion.
  • the processor 120 may arrange an end identifier indicating the last block of the corresponding content in the end regions of the last partial regions of the partial regions of the content generation buffer.
  • the processor 120 (eg, the encoder 129 or the output processing module 127) stores the content (eg, JPEG panoramic image) of the designated manner in the memory 130 or outputs to the display 160. can do.
  • the content eg, JPEG panoramic image
  • FIG. 4 is a diagram illustrating another example of an image processing method according to an exemplary embodiment.
  • the processor 120 may perform input event processing related to an image collection function. If the user input is not related to the image collection function, the processor 120 may process a function corresponding to the type of the user input in operation 403. For example, the processor 120 may process a communication function, a file search function, a file play function, or the like corresponding to the type of the user input.
  • the processor 120 may activate the camera 180. After activation of the camera 180, in operation 405, the processor (eg, the input buffer management module 123) may determine a photographing direction (or an image acquisition direction).
  • the processor 120 eg, the content generation module 125
  • the processor 120 may use the at least one sensor (eg, an acceleration sensor or a geomagnetic sensor) included in the electronic device 100 to specify content (eg, Initial shooting direction related to the generation of the panoramic image) may be determined. For example, when the user moves or rotates the electronic device 100 in a left (or right) direction, the processor 120 may determine a shooting direction from right to left (or left to right).
  • the processor 120 may determine the photographing direction based on the preview image. For example, the processor 120 analyzes the moving direction of the image by comparing the preview image which is subsequently input based on the preview image of the first viewpoint (eg, when the panorama image is requested to be taken), and determines the shooting direction based on the analysis result. You can decide. In this regard, the processor 120 may output information to the display 160 to guide the determination of the shooting direction related to the generation of the designated content.
  • the processor 120 may allocate a content generating buffer according to the photographing direction.
  • the processor 120 may allocate the size or shape of the content generation buffer differently according to the shooting direction. For example, the processor 120 allocates a first content generation buffer of a first size when the photographing direction is determined in a first direction (eg, left and right directions), and when it is determined in a second direction (eg, up and down direction), A second content generation buffer of two sizes may be allocated. The second size may be smaller than the first size.
  • the size of at least one side of the second content generation buffer may be smaller than the size of at least one side of the first content generation buffer.
  • the processor 120 may allocate a 3840 * 20000 content generation buffer or a 2160 * 20000 content generation buffer according to the photographing direction.
  • the processor 120 may divide the content generation buffer into a plurality of areas.
  • the processor 120 may divide the content generation buffer into a plurality of regions with respect to the direction in which the image is continuously stored.
  • the processor 120 may divide the content generation buffer into a plurality of columns parallel to the direction in which the image is stitched.
  • the content generation buffer may have a form in which a plurality of partial regions are stacked up and down.
  • the processor 120 may perform image collection according to a user input or according to a specified scheduling. For example, the processor 120 may receive an image from the camera 180 that is continuously photographed at a predetermined period.
  • the processor 120 may process image stitching (eg, image registration), but additionally or selectively perform image blending.
  • the processor 120 may select an image having a region similar to a previously designated image or more than or within a predetermined range among the plurality of images, and stitch the selected image and the previously designated image.
  • the previously designated image may include an image acquired first from the camera 180, and images stitched after the first acquired image. To achieve a more natural color representation in the boundary areas of the images, you can perform the specified color processing (eg blending). There.
  • the processor 120 may calculate an encoding region. For example, the processor 120 may extract image regions newly stitched to a previously stored image as a new encoding region.
  • the processor 120 eg, the encoder 129) may perform parallel encoding.
  • the processor 120 may encode the image regions extracted as the encoding region in units of blocks having a predetermined size. In this operation, the processor 120 may refer to the last block of the same partial area among the previously stored image areas, and encode the first block of the new image area.
  • the processor 120 may process sub-regions (eg, 16 * 16) corresponding to an encoding unit block (eg, 16 * 16) during image processing in relation to a first direction (eg, a direction in which one side of the image is 3840 pixels in size). 240 can be encoded in parallel by allocating to a certain number of threads (e.g. 6 threads). Alternatively, the processor 120 may process small portions (eg, 135) corresponding to an encoding unit block (eg, 16 * 16) in an image processing process related to a second direction (eg, a direction in which one side of the image is 2160 pixels in size). Can be assigned to a number of threads (e.g.
  • the processor 120 may allocate and encode a large number of small regions in a thread having a relatively high processing speed.
  • the processor 120 divides the smaller sized image into encoding unit blocks, and divides the partial regions of the encoding unit block size by a specified number of threads (eg, each of the partial regions). Can be encoded in parallel.
  • the processor 120 may check whether the image collection is finished. If the image collection is not finished, the processor 120 may branch to operation 411 and perform the following operation again.
  • the processor 120 eg. the content generation module 125 and the encoder 129) may perform an image integration process.
  • the processor 120 eg, the encoder 129 or the output processing module 127) may store the image-integrated content in the memory 130 or output it to the display 160.
  • the image integration processing operation and the storage or output operation may be performed in the same manner as operations 315 and 317 described with reference to FIG. 3.
  • Operations eg, 301 through 317, or 401 through 423 described in the processes and methods illustrated in FIGS. 3 and 4 may be executed in a sequential, parallel, repetitive or heuristic manner. For example, the operations may be performed in a different order, some operations may be omitted, or other operations may be added.
  • FIG. 5 is a diagram illustrating memory operation according to an exemplary embodiment of the present invention.
  • the processor 120 may allocate a content generation buffer 30 corresponding to one content size in the memory 130.
  • the content generation buffer 30 may include, for example, a first side having a number of pixels equal to a length in a first direction of one image collected by the camera 180 or an image of a predetermined size according to a setting, such as in a state 501. 30a) and a memory area corresponding to the area of the second side 30b having the number of pixels having a length specified in the second direction.
  • the first side 30a may be divided into a plurality of partial regions 30x.
  • the plurality of partial regions 30x may be regions divided to have a long length in the horizontal direction.
  • the plurality of partial regions 30x may include the first partial region 30_1, the second partial region 30_2,. , N-th partial region 30_N.
  • the number of the plurality of partial regions 30x may be determined by the size of a designated block related to encoding. For example, as the number of pixels that the encoder 129 can process simultaneously increases, the block size may increase.
  • the size of the partial regions may vary according to the size and number of encoding unit blocks that can be processed by the encoder 129.
  • the processor 120 determines that each of the partial regions 30x is a block of a predetermined size (for example, 40 small region regions corresponding to encoding unit blocks have a width of one partial region). Blocks allocated to correspond to the length).
  • the size of the encoding unit block is described in the form of a square, the size of the encoding unit block may be provided in the form of a rectangle according to a design scheme.
  • the length of the partial regions 30x may be determined by a policy regarding the generated content.
  • the horizontal length of the partial regions 30x may be defined as a predetermined pixel size, for example, 20000 pixel size.
  • the horizontal length of the partial regions 30x may have a smaller number of pixels or a larger number of pixels depending on the content setting.
  • the processor 120 may buffer the image in the first area 51a corresponding to the first image, as in the state 503.
  • the processor 120 may divide each partial region of the first region 51a into block units having a predetermined size and encode the first blocks 51b.
  • the processor 120 may process the blocks having a predetermined size to be disposed in the first region 51a.
  • the processor 120 may define the first blocks 51b such that the blocks do not overlap at the boundary of the first area 51a.
  • the encoder 129 may encode the respective partial regions 30x.
  • the encoder 129 may perform parallel encoding of blocks of a predetermined size disposed in each of the partial regions 30x.
  • the encoder 129 may encode in parallel partial regions (eg, a predetermined number of small partial regions constitute one partial region) provided through a specified number of threads (eg, six threads).
  • the second region 52a corresponding to the second image may be positioned as shown in the state 505.
  • the processor 120 maintains the first blocks 51b in the region overlapping the first region 51a of the second region 52a, and the second image region not overlapping the first region 51a.
  • the second blocks 52b having a predetermined size may be disposed in some portions, but the blocks may be arranged so that the second blocks 52b do not cross the boundary area of the second area 52a. Accordingly, in the second region 52a, second blocks 52b adjacent to the first edge blocks 51c disposed at the right edge of the first region 51a are disposed in the second region 52a. Can be.
  • the processor 120 may refer to the first edge blocks 51c (eg, the blocks adjacent to the second blocks 52b of the first blocks 51b) and the second blocks 52b may not be provided. Encoding can be performed. When performing encoding on the second blocks 52b, the processor 120 may allocate partial regions to threads to perform parallel encoding. The second image may have a height different from that of the first image by photographing the subject relatively lower than the position where the first image is photographed. In relation to the generation of the content (eg, panoramic image) in a specified manner, the processor 120 may perform stitching (eg, at least one of registration and blending) on an overlapping area of the first image and the second image. have. After the stitching process, the processor 120 may place second blocks 52b related to encoding.
  • stitching eg, at least one of registration and blending
  • the processor 120 may redistribute the small portions of the reduced image evenly to a specified number of threads, or may increase the number of small portions to a relatively fast data processing thread. Areas can be allocated. For example, if the small portion of the first image (e.g., the unit block size) is 240 with one side performing encoding in units of 16 * 16 blocks, the processor 120 may have 40 small portions in 6 threads. Regions can be allocated for parallel encoding. According to stitching, if the small region of the second image is reduced to 180, the processor 120 may allocate 30 small regions to six threads and encode in parallel for each thread.
  • the small portion of the first image e.g., the unit block size
  • the processor 120 may have 40 small portions in 6 threads. Regions can be allocated for parallel encoding. According to stitching, if the small region of the second image is reduced to 180, the processor 120 may allocate 30 small regions to six threads and encode in parallel for each thread.
  • the processor 120 may allocate 40 small regions to a thread having a relatively high processing speed, and allocate a relatively small number of small regions to a thread having a relatively slow processing speed. In connection with this operation, the processor 120 may collect information about the processing speed of each thread, and may vary the number of subregions allocated to the thread based on the information.
  • the third region 53a corresponding to the third image may be positioned as shown in the state 507.
  • the processor 120 maintains the blocks in the first area 51a and the second area 52a in the area overlapping the first area 51a and the second area 52a of the third area 53a.
  • the processor 120 arranges the third blocks 53b having a predetermined size in a part of the third image area that does not overlap the first area 51a and the second area 52a, and the third blocks 53b. Blocks may be arranged so as not to exceed the boundary region of the third region 53a. Accordingly, the third blocks 53b may be disposed to be adjacent to the second edge blocks 52c disposed at the right edge of the second area 52a.
  • the processor 120 may perform parallel encoding on the third blocks 53b by referring to the second edge blocks 52c.
  • the processor 120 may perform a stitching process on the previous image and the third image before disposing the third blocks 53b.
  • the fourth region 54a corresponding to the fourth image may be positioned as shown in the 509 state.
  • the processor 120 performs stitching processing on the previous image and the fourth image, and as in the above-described manner, the fourth block adjacent to the third edge blocks 53c disposed at the right edge of the third region 53a.
  • Fields 54b may be disposed in the content generation buffer 30.
  • the processor 120 may perform parallel encoding on the fourth blocks 54b with reference to the third edge blocks 53c.
  • the processor 120 may perform the integration process on the encoded blocks. In this operation, the processor 120 removes all of the encoded first blocks 51b, second blocks 52b, third blocks 53b, and fourth blocks 54b, as in state 511.
  • Identifier area 520 including the merged content data area 510, header information 510_H of all blocks associated with the content data area 510, designated identifiers 510x and decoding identifier 510_NE related to the decoding scheme. ) May be generated to include content.
  • the designated identifiers 510x include a first designated identifier 510_1 disposed adjacent to the last block of the first partial region 30_1 and a second designated identifier disposed adjacent the last block of the second partial region 30_2.
  • 510_2, ,,,, may include an N-th designated identifier 510_N-1 disposed adjacent to the last block of the N-first subregion.
  • an end identifier 510_NE indicating the end of content may be disposed.
  • images having a similar area over a predetermined range among the images transmitted by the camera 180 may be ignored without being used for image stitching.
  • the processor 120 may select an image having a similar area within a predetermined range (for example, an image having a size of 30% to 60% similar to the previous image) among images transmitted by the camera 180.
  • an image processing method may include, by a processor of an electronic device, dividing an allocated content generation buffer into a plurality of partial regions in association with a specified content generation, and receiving a received current image. Stitching the previous image and the current image based on an overlapping region of the previous image, and when the stitched images are stored in the content generation buffer, parallel to each of the partial regions of the stitched image at a specified block size.
  • the method may include determining an image acquisition direction related to the content generation based on a change in motion of received preview images, and using the at least one sensor. Determine the direction of image acquisition in relation to creation At least one of a motion may further include.
  • the method may further include allocating a content generation buffer having a different size according to the photographing direction.
  • the allocating may include allocating a content generation buffer having a first length in a first direction and a second length in a second direction, and corresponding to a second shooting direction. And allocating a content generation buffer having a third length smaller than the first length in a first direction and having a second length in a second direction.
  • the method may further include overlaying the stitched image on the background area while outputting the acquired image to the background area of the display.
  • the method may further include outputting a preview area having a ratio corresponding to the entire size of the content generation buffer to the display during the image collection or after the image collection is completed.
  • the outputting operation may include outputting the preview area including a stitching area corresponding to the stitching image and a remaining area corresponding to the entire size of the content generation buffer.
  • the method when the image collection to be stitched is finished, is configured to place a designated identifier indicating that the last block of the partial region is not used for processing the first block of another partial region in the last block of the respective partial regions. Disposing an end identifier indicating the last block of the last partial region of the content in an adjacent region of the last block of the final partial region of the content, and placing header information corresponding to the entire content region in front of the first partial region;
  • the operation may further include.
  • the stitching operation may include an operation of selecting and stitching an image having a region similar to the previous image within a predetermined range among a plurality of received images.
  • the method may further include excluding a current image area having a different height from the previous image during the stitching from the buffering of the content generation buffer.
  • FIG. 6 is a diagram illustrating an interface relating to image acquisition of an electronic device according to an embodiment of the present disclosure.
  • the designated content will be described based on the panorama content.
  • the electronic device 100 may activate the camera 180 in response to a user input or in response to a scheduled setting.
  • the display 160 of the electronic device 100 may output the preview screen of the camera 180 used to determine the photographing direction in relation to the generation of the panoramic image as in the screen 601.
  • the display 160 outputs a menu item related to the panorama image generation on the preview screen according to the activation of the camera 180, and displays the preview screen related to the shooting direction determination as shown in response to the menu item selection. You can print As in the screen 601, the display 160 may output a screen including the background area 610 or the progress indicator 670 in relation to the corresponding panoramic image.
  • the photographing direction may be determined to the right.
  • the display 160 may output a direction indicating object 630 indicating a photographing direction determination, as shown on a screen 603.
  • the direction indicating object 630 for instructing to determine the photographing direction is in another direction (eg, left direction, upward direction). , Downward direction).
  • the electronic device 100 may use a change in the preview image acquired using at least one sensor in relation to determining the photographing direction.
  • the electronic device 100 may output the partially stitched image to the preview area 650 as shown on the screen 605.
  • the preview area 650 may have, for example, the same ratio as the overall size ratio of the panoramic image.
  • the preview area 650 may include a stitching area 651 stitched with the obtained images and a remaining area 653 to be filled with the images to be obtained.
  • the display 160 may output a progress indicator 670 indicating that the panoramic image is being captured. When the panorama image capturing ends, the progress indicator 670 may be removed from the display 160.
  • the electronic device 100 When all images corresponding to the size of the preview area 650 are acquired, the electronic device 100 ends capturing the panoramic image or responds to a designated end input (for example, selecting a virtual button indicating a lapse of a specified time or end). To end the panorama image shooting.
  • the electronic device 100 may expand the stitched image and change the stitched image to fit the entire size of the preview area 650.
  • the electronic device 100 may generate a stitching image having a small size as a panorama image. In this case, a panoramic image having a length relatively smaller than the entire length of the preview area 650 may be generated.
  • the electronic device 100 encodes the acquired images every time when stitching the acquired images, and immediately after capturing the panoramic image, integrates the encoded data to quickly process the storage of the panoramic image.
  • the output processing module 127 of the electronic device 100 may output the plurality of images received by the input buffer management module 123 to the display 160.
  • the output processing module 127 of the electronic device 100 may output the data during panorama generation provided by the content generation module 125 to the display area 650 as the preview area 650.
  • the image displayed on the stitching area 651 may be an image (eg, a thumbnail image) in which the blocks encoded by the encoder 129 are scaled.
  • FIG. 7 is a diagram illustrating an interface related to image reproduction of an electronic device according to an embodiment of the present disclosure.
  • the display 160 of the electronic device 100 may output a user interface related to panorama image playback as shown.
  • the electronic device 100 may output an icon or file image related to at least one panoramic image.
  • the electronic device 100 may output a plurality of file icons to the display 160.
  • the shape of the file icon corresponding to the panoramic image and the file icon corresponding to the still image may be different.
  • the display 160 includes a background area 710, a preview area 720, and a virtual playback button 730 in relation to the panorama image. You can print the screen.
  • the electronic device 100 When the virtual play button 730 is selected, the electronic device 100 outputs the panoramic image to the display 160 as shown on the screen 703, and displays the panoramic image so that the panoramic image not yet displayed is displayed on the display 160. It can be moved automatically on the display 160. For example, the first screen 731 currently being output to the display 160 of the image may be moved from right to left, and the second screen 733 may be output to the display 160.
  • the electronic device 100 may output a panoramic image moving from the right side to the left side, and then output the panoramic image moving from the left side to the right side when the last region of the right side of the panoramic image is output to the display 160.
  • an electronic device may include a plurality of images, a memory storing a panoramic image generated from the plurality of images, and a processor electrically connected to the memory.
  • a specific image is stored in the memory
  • a stitched image is generated by selecting an image to be stitched with the specific image
  • the stitched image is divided into a plurality of partial regions, and each of the partial regions is a specified size. It may be set to parallel encode in blocks of.
  • the processor may be configured to parallel encode the newly added partial regions of the stitching image in units of blocks of a predetermined size every time stitching of the previous image and the selected image.
  • an electronic device may include a camera configured to photograph and sequentially provide a plurality of images related to a panorama image generation, a memory configured to store the plurality of images provided by the camera, the camera, and the And a processor electrically connected to a memory, wherein the processor allocates a content generation buffer corresponding to the panoramic image, divides the content generation buffer into partial regions of a predetermined size, and then transfers the image each time the image is received. Stitching with an image, buffering the stitched portion in the content generation buffer, and then setting the parallel portions of the blocks arranged in the respective partial regions in units of a predetermined size.
  • the processor may be configured to buffer the received image in the content generation buffer and to parallel encode the portions disposed in the respective partial regions in blocks of a predetermined size. have.
  • the processor may be configured to stitch only a portion of the current image that is contiguous with a previous image, buffer the stitched image in the content generation buffer, and then parallel-encode the portions disposed in the respective partial regions in blocks of a predetermined size.
  • an electronic device may include a camera that photographs and provides an image related to a panorama image generation, a memory that stores an image provided by the camera, and is electrically connected to the camera and the memory. And a processor, wherein the processor allocates a content generation buffer corresponding to the direction when the direction related to panorama image capturing is determined, divides the content generation buffer into partial regions of a predetermined size, and stitches the received images. Each time the first image and the stitched image are stored in the content generation buffer, the image stored in the partial regions may be parallel-encoded in units of blocks of a predetermined size.
  • FIG. 8 is a block diagram of an electronic device according to various embodiments of the present disclosure.
  • the electronic device 801 may include, for example, all or part of the electronic device 100 illustrated in FIG. 1.
  • the electronic device 801 may include one or more processors (eg, an AP) 810, a communication module 820, a subscriber identification module 829, a memory 830, a sensor module 840, an input device 850, and a display ( 860, an interface 870, an audio module 880, a camera module 891, a power management module 895, a battery 896, an indicator 897, and a motor 898.
  • the electronic device 801 may optionally include a security module 836.
  • the processor 810 may control, for example, a plurality of hardware or software components connected to the processor 810 by running an operating system or an application program, and may perform various data processing and operations.
  • the processor 810 may be implemented with, for example, a system on chip (SoC).
  • SoC system on chip
  • the processor 810 may further include a graphic processing unit (GPU) and / or an image signal processor.
  • the processor 810 may include at least some of the components illustrated in FIG. 8 (eg, the cellular module 821).
  • the processor 810 may load and process instructions or data received from at least one of the other components (eg, nonvolatile memory) into volatile memory, and store various data in the nonvolatile memory. have.
  • the communication module 820 may have a configuration that is the same as or similar to that of the communication interface 170 of FIG. 1.
  • the communication module 820 may be, for example, a cellular module 821, a Wi-Fi module 822, a Bluetooth module 823, a GNSS module 824 (eg, a GPS module, a Glonass module, a Beidou module, or a Galileo). Module), NFC module 825, MST module 826, and radio frequency (RF) module 827.
  • the GNSS may be, for example, a Global Positioning System (GPS), a Global Navigation Satellite System (Glonass), a Beidou Navigation Satellite System (hereinafter referred to as “Beidou”) or Galileo, the European global satellite-based navigation system.
  • GPS Global Positioning System
  • Glonass Global Navigation Satellite System
  • Beidou Beidou Navigation Satellite System
  • Galileo the European global satellite-based navigation system
  • the cellular module 821 may provide, for example, a voice call, a video call, a text service, or an internet service through a communication network. According to an embodiment of the present disclosure, the cellular module 821 may perform identification and authentication of the electronic device 801 in a communication network using a subscriber identification module (eg, a SIM card) 829. According to an embodiment of the present disclosure, the cellular module 821 may perform at least some of the functions that the processor 810 may provide. According to an embodiment of the present disclosure, the cellular module 821 may include a communication processor (CP).
  • CP communication processor
  • Each of the Wi-Fi module 822, the Bluetooth module 823, the GNSS module 824, the NFC module 825, or the MST module 826 processes data transmitted and received through the corresponding module. It may include a processor for. According to some embodiments, at least some (eg, two) of the cellular module 821, the Wi-Fi module 822, the Bluetooth module 823, the GNSS module 824, the NFC module 825, and the MST module 826 Or more) may be included in one integrated chip (IC) or IC package.
  • IC integrated chip
  • the RF module 827 may transmit / receive, for example, a communication signal (eg, an RF signal).
  • the RF module 827 may include, for example, a transceiver, a power amp module (PAM), a frequency filter, a low noise amplifier (LNA), an antenna, or the like.
  • PAM power amp module
  • LNA low noise amplifier
  • at least one of the cellular module 821, the Wi-Fi module 822, the Bluetooth module 823, the GNSS module 824, the NFC module 825, and the MST module 826 is a separate RF.
  • the module can transmit and receive RF signals.
  • Subscriber identification module 829 may include, for example, a card containing a subscriber identification module and / or an embedded SIM, and may include unique identification information (eg, an integrated circuit card identifier (ICCID)) or It may include subscriber information (eg, international mobile subscriber identity).
  • ICCID integrated circuit card identifier
  • the memory 830 may include, for example, an internal memory 832 or an external memory 834.
  • the internal memory 832 may be, for example, volatile memory (eg, dynamic RAM (DRAM), static RAM (SRAM), or synchronous dynamic RAM (SDRAM), etc.), non-volatile memory (eg, One time programmable ROM (OTPROM), programmable ROM (PROM), erasable and programmable ROM (EPROM), electrically erasable and programmable ROM (EPEROM), mask ROM, flash ROM, flash memory (e.g., NAND flash) (NAND flash or NOR flash, etc.), a hard drive, or a solid state drive (SSD).
  • volatile memory eg, dynamic RAM (DRAM), static RAM (SRAM), or synchronous dynamic RAM (SDRAM), etc.
  • non-volatile memory eg, One time programmable ROM (OTPROM), programmable ROM (PROM), erasable and programmable ROM (EPROM), electrically
  • the external memory 834 may be a flash drive, for example, compact flash (CF), secure digital (SD), Micro-SD, Mini-SD, extreme digital (XD), MultiMediaCard (MMC), or memory. It may further include a stick (memory stick).
  • the external memory 834 may be functionally and / or physically connected to the electronic device 801 through various interfaces.
  • the security module 836 is a module including a storage space having a relatively higher security level than the memory 830, and may be a circuit that ensures safe data storage and a protected execution environment.
  • the security module 836 may be implemented as a separate circuit and may include a separate processor.
  • the security module 836 may include, for example, an embedded secure element (eSE) that is present in a removable smart chip, a secure digital (SD) card, or embedded in a fixed chip of the electronic device 801. It may include.
  • eSE embedded secure element
  • SD secure digital
  • the security module 836 may be driven by an operating system different from the operating system (OS) of the electronic device 801.
  • OS operating system
  • the security module 836 may operate based on a java card open platform (JCOP) operating system.
  • JCOP java card open platform
  • the sensor module 840 may measure a physical quantity or detect an operation state of the electronic device 801 to convert the measured or detected information into an electrical signal.
  • the sensor module 840 includes, for example, a gesture sensor 840A, a gyro sensor 840B, an air pressure sensor 840C, a magnetic sensor 840D, an acceleration sensor 840E, a grip sensor 840F, and a proximity sensor ( 840G), color sensor 840H (e.g., RGB sensor), biometric sensor 840I, temperature / humidity sensor 840J, illuminance sensor 840K, or UV (ultra violet) sensor 840M can do.
  • the sensor module 840 may include, for example, an olfactory sensor, an electromyography sensor, an electroencephalogram sensor, an electrocardiogram sensor, an infrared sensor, an iris. Sensors and / or fingerprint sensors.
  • the sensor module 840 may further include a control circuit for controlling at least one or more sensors belonging therein.
  • the electronic device 801 further includes a processor configured to control the sensor module 840 as part of or separately from the processor 810, while the processor 810 is in a sleep state, The sensor module 840 may be controlled.
  • the input device 850 may be, for example, a touch panel 852, a (digital) pen sensor 854, a key 856, or an ultrasonic input device ( 858).
  • the touch panel 852 may use, for example, at least one of capacitive, resistive, infrared, or ultrasonic methods.
  • the touch panel 852 may further include a control circuit.
  • the touch panel 852 may further include a tactile layer to provide a tactile response to the user.
  • the (digital) pen sensor 854 may be, for example, part of a touch panel or include a separate sheet for recognition.
  • the key 856 may include, for example, a physical button, an optical key, or a keypad.
  • the ultrasonic input device 858 may detect ultrasonic waves generated by an input tool through a microphone (for example, the microphone 888) and check data corresponding to the detected ultrasonic waves.
  • the display 860 may include a panel 862, a hologram device 864, or a projector 866.
  • the panel 862 may include a configuration that is the same as or similar to that of the display 160 of FIG. 1.
  • the panel 862 may be implemented to be, for example, flexible, transparent, or wearable.
  • the panel 862 may be configured as a single module with the touch panel 852.
  • the panel 862 may include a pressure sensor (or force sensor) capable of measuring the strength of the pressure with respect to the user's touch.
  • the pressure sensor may be integrated with the touch panel 852 or may be implemented with one or more sensors separate from the touch panel 852.
  • the hologram device 864 may show a stereoscopic image in the air by using interference of light.
  • the projector 866 may display an image by projecting light onto a screen.
  • the screen may be located inside or outside the electronic device 801.
  • the display 860 may further include a control circuit for controlling the panel 862, the hologram device 864, or the projector 866.
  • the interface 870 may include, for example, an HDMI 872, a USB 874, an optical interface 876, or a D-subminiature 878.
  • the interface 870 may be included in, for example, the communication interface shown in FIG. 1. Additionally or alternatively, the interface 870 may include, for example, a mobile high-definition link (MHL) interface, an SD card / MMC interface, or an infrared data association (IrDA) compliant interface.
  • MHL mobile high-definition link
  • IrDA infrared data association
  • the audio module 880 may bidirectionally convert, for example, a sound and an electrical signal. At least some components of the audio module 880 may be included in, for example, the input / output module 150 illustrated in FIG. 1.
  • the audio module 880 may process sound information input or output through, for example, a speaker 882, a receiver 884, an earphone 886, a microphone 888, or the like.
  • the camera module 891 is, for example, a device capable of capturing still images and moving images.
  • the camera module 891 may include one or more image sensors (eg, a front sensor or a rear sensor), a lens, and an image signal processor (ISP). Or flash (eg, LEDs or xenon lamps).
  • image sensors eg, a front sensor or a rear sensor
  • ISP image signal processor
  • flash eg, LEDs or xenon lamps.
  • the power management module 895 may manage power of the electronic device 801, for example.
  • the power management module 895 may include a power management integrated circuit (PMIC), a charger integrated circuit (ICC), or a battery or fuel gauge.
  • the PMIC may have a wired and / or wireless charging scheme.
  • the wireless charging method may include, for example, a magnetic resonance method, a magnetic induction method, an electromagnetic wave method, or the like, and may further include additional circuits for wireless charging, such as a coil loop, a resonance circuit, a rectifier, and the like. have.
  • the battery gauge may measure, for example, the remaining amount of the battery 896, the voltage, the current, or the temperature during charging.
  • the battery 896 may include, for example, a rechargeable battery and / or a solar battery.
  • the indicator 897 may display a specific state of the electronic device 801 or a part thereof (for example, the processor 810), for example, a booting state, a message state, or a charging state.
  • the motor 898 may convert an electrical signal into mechanical vibration, and may generate a vibration or haptic effect.
  • the electronic device 801 may include a processing device (eg, a GPU) for supporting mobile TV.
  • the processing apparatus for supporting mobile TV may process media data according to a standard such as Digital Multimedia Broadcasting (DMB), Digital Video Broadcasting (DVB), or MediaFLOTM.
  • DMB Digital Multimedia Broadcasting
  • DVD Digital Video Broadcasting
  • MediaFLOTM MediaFLOTM
  • each of the components described in this document may be composed of one or more components, and the name of the corresponding component may vary according to the type of electronic device.
  • the electronic device may be configured to include at least one of the components described in this document, and some components may be omitted or further include other additional components.
  • some of the components of the electronic device according to various embodiments of the present disclosure may be combined to form one entity, and thus may perform the same functions of the corresponding components before being combined.
  • FIG. 9 is a block diagram of a program module according to various embodiments of the present disclosure.
  • the program module 910 (eg, the program 140) is operated on an operating system (OS) and / or operating system that controls resources related to the electronic device (eg, the electronic device 100).
  • OS operating system
  • applications eg, application program 147) may be included.
  • the operating system may include, for example, Android TM , iOS TM , Windows TM , Symbian TM , Tizen TM , or Bada TM .
  • the program module 910 may include a kernel 920, middleware 930, API 960, and / or an application 970. At least a part of the program module 910 may be preloaded on the electronic device or may be downloaded from an external electronic device (eg, the external electronic devices 101 and 102, the server 106, etc.).
  • an external electronic device eg, the external electronic devices 101 and 102, the server 106, etc.
  • the kernel 920 may include, for example, a system resource manager 921 or a device driver 923.
  • the system resource manager 921 may perform control, allocation, or retrieval of system resources.
  • the system resource manager 921 may include a process manager, a memory manager, or a file system manager.
  • the device driver 923 may include, for example, a display driver, a camera driver, a Bluetooth driver, a shared memory driver, a USB driver, a keypad driver, a Wi-Fi driver, an audio driver, or an inter-process communication (IPC) driver. Can be.
  • IPC inter-process communication
  • the middleware 930 may provide various functions through the API 960, for example, to provide functions commonly required by the application 970, or to allow the application 970 to efficiently use limited system resources inside the electronic device. Functions may be provided to the application 970.
  • the middleware 930 (for example, the middleware 143) may include a runtime library 935, an application manager 941, a window manager 942, and a multimedia manager. 943, resource manager 944, power manager 945, database manager 946, package manager 947, connectivity manager 948, notification manager 949, location manager 950, graphic manager 951, security manager 952, or payment manager 954 It may include at least one of).
  • the runtime library 935 may include, for example, a library module that the compiler uses to add new functionality through the programming language while the application 970 is running.
  • the runtime library 935 may perform input / output management, memory management, or a function for an arithmetic function.
  • the application manager 941 may manage, for example, a life cycle of at least one of the applications 970.
  • the window manager 942 may manage GUI resources used on the screen.
  • the multimedia manager 943 may grasp formats required for playing various media files, and perform encoding or decoding of media files using a codec suitable for the format.
  • the resource manager 944 may manage resources such as source code, memory, or storage space of at least one of the applications 970.
  • the power manager 945 may operate with, for example, a basic input / output system (BIOS) to manage a battery or a power source, and provide power information necessary for the operation of the electronic device.
  • the database manager 946 may create, retrieve, or change a database for use in at least one of the applications 970.
  • the package manager 947 may manage installation or update of an application distributed in the form of a package file.
  • the connection manager 948 may manage, for example, a wireless connection such as Wi-Fi or Bluetooth.
  • Notification manager 949 may display or notify events such as arrival messages, appointments, proximity notifications, and the like in a manner that does not disturb the user.
  • the location manager 950 may manage location information of the electronic device.
  • the graphic manager 951 may manage graphic effects to be provided to the user or a user interface related thereto.
  • the security manager 952 may provide various security functions required for system security or user authentication.
  • the middleware 930 when the electronic device (eg, the electronic device 100) includes a telephone function, the middleware 930 further includes a telephone manager for managing a voice or video call function of the electronic device. can do.
  • the middleware 930 may include a middleware module that forms a combination of various functions of the above-described components.
  • the middleware 930 may provide a module specialized for each type of OS in order to provide a differentiated function.
  • the middleware 930 may dynamically delete some of the existing components or add new components.
  • the API 960 (eg, the API 145) is, for example, a set of API programming functions, and may be provided in different configurations depending on the operating system. For example, in the case of Android or iOS, one API set may be provided for each platform, and in Tizen, two or more API sets may be provided for each platform.
  • Application 970 may be, for example, home 971, dialer 972, SMS / MMS 973, instant message (974), browser (975), Camera 976, Alarm 997, Contact 978, Voice Dial 979, Email 980, Calendar 981, Media Player 982, Album 983, or Clock 984, Billing ( 985) one or more applications capable of performing functions such as health care (e.g., measuring exercise or blood glucose), or providing environmental information (e.g., providing barometric pressure, humidity, or temperature information). It may include.
  • health care e.g., measuring exercise or blood glucose
  • environmental information e.g., providing barometric pressure, humidity, or temperature information
  • the application 970 may include an electronic device (eg, an application for supporting information exchange between the electronic device 100 and an external electronic device (hereinafter, for convenience of description, “information exchange application”)).
  • the information exchange application may include, for example, a notification relay application for delivering specific information to an external electronic device, or a device management application for managing the external electronic device.
  • the notification delivery application may include a function of delivering notification information generated by another application of the electronic device (eg, an SMS / MMS application, an email application, a health care application, or an environmental information application) to an external electronic device.
  • another application of the electronic device eg, an SMS / MMS application, an email application, a health care application, or an environmental information application
  • the notification delivery application may receive notification information from an external electronic device and provide the notification information to a user, for example.
  • the device management application may be, for example, the turn-on / turn-off of the external electronic device itself (or some component) of the external electronic device in communication with the electronic device, or the brightness (or resolution) of the display. Control), and manage (eg, install, delete, or update) an application running on the external electronic device or a service (eg, a call service or a message service) provided by the external electronic device.
  • a service eg, a call service or a message service
  • the application 970 may include an application (eg, a health care application of a mobile medical device) designated according to an attribute of the electronic device (eg, the electronic device 100).
  • the application 970 may include an application received from an external electronic device.
  • the application 970 may include a preloaded application or a third party application downloadable from a server.
  • the names of the components of the program module 910 according to the shown embodiment may vary depending on the type of operating system.
  • At least a part of the program module 910 may be implemented in software, firmware, hardware, or a combination of two or more thereof. At least a part of the program module 910 may be implemented (for example, executed) by, for example, a processor (for example, the processor 810). At least a part of the program module 910 may include, for example, a module, a program, a routine, sets of instructions, or a process for performing one or more functions.
  • module may refer to a unit that includes one or a combination of two or more of hardware, software, or firmware.
  • the term “module” may be used interchangeably with terms such as, for example, unit, logic, logical block, component, processor, or circuit. have.
  • the module may be a minimum unit or part of an integrally constructed part.
  • the module may be a minimum unit or part of performing one or more functions.
  • the “module” can be implemented mechanically or electronically.
  • a “module” is one of application-specific integrated circuit (ASIC) chips, field-programmable gate arrays (FPGAs), or programmable-logic devices that perform certain operations, known or developed in the future. It may include at least one.
  • ASIC application-specific integrated circuit
  • FPGAs field-programmable gate arrays
  • an apparatus eg, modules or functions thereof
  • a method eg, operations
  • computer-readable storage media in the form of a program module. It can be implemented as a command stored in.
  • the instruction is executed by a processor (eg, the processor 120)
  • the one or more processors may perform a function corresponding to the instruction.
  • the computer-readable storage medium may be the memory 130, for example.
  • Computer-readable recording media include hard disks, floppy disks, magnetic media (e.g. magnetic tapes), optical media (e.g. CD-ROMs, digital versatile discs), magnetic- Optical media (eg floptical disks), hardware devices (eg ROM, RAM, flash memory, etc.), etc.
  • program instructions may be created by a compiler. It may include not only machine code, such as losing, but also high-level language code executable by a computer using an interpreter, etc.
  • the hardware device described above may be configured to operate as one or more software modules to perform the operations of various embodiments. And vice versa.
  • a storage medium may include a memory configured to store at least one instruction and a processor configured to execute the instructions stored in the memory, wherein the instructions executed by the processor may be generated by a processor of the electronic device.
  • it may be set to include an operation of performing parallel encoding on each of the partial regions of the stitched image with a specified block size.
  • Modules or program modules according to various embodiments of the present disclosure may include at least one or more of the above components, some of them may be omitted, or may further include additional components. Operations performed by a module, program module, or other component according to various embodiments of the present disclosure may be executed in a sequential, parallel, repetitive, or heuristic manner. In addition, some operations may be executed in a different order, may be omitted, or other operations may be added.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Human Computer Interaction (AREA)
  • Studio Devices (AREA)
  • Image Processing (AREA)

Abstract

본 발명의 실시 예는 이미지 인코딩과 관련한 적어도 하나의 명령어를 저장하는 메모리, 상기 메모리와 전기적으로 연결되는 프로세서를 포함하고, 상기 프로세서 실행 중에 수행되는 상기 명령어는 지정된 컨텐츠 생성과 관련하여 할당된 컨텐츠 생성 버퍼를 복수개의 부분 영역들로 구분하고, 수신되는 현재 이미지와 이전 이미지의 중첩되는 영역을 기준으로 상기 이전 이미지와 상기 현재 이미지를 스티칭하고, 상기 스티칭된 이미지들이 상기 컨텐츠 생성 버퍼에 저장되면 상기 스티칭된 이미지의 부분 영역들 각각에 대하여 지정된 블록 크기로 병렬 인코딩하도록 설정되는 전자 장치를 개시한다. 이 외에도 명세서를 통해 파악되는 다양한 실시 예가 가능하다.

Description

이미지 처리 방법 및 이를 지원하는 전자 장치
다양한 실시 예는 이미지 처리에 관한 것이다.
전자 장치는 카메라 등을 통해 이미지를 획득할 수 있다. 상기 전자 장치는 획득한 이미지를 지정된 방식으로 인코딩하여 저장할 수 있다.
다양한 실시예들은 이미지 처리 과정에서 효율적인 인코딩을 수행할 수 있도록 하는 이미지 처리 방법 및 이를 지원하는 전자 장치를 제공한다.
본 발명의 다양한 실시 예에 따른 전자 장치는 수집된 이미지 인코딩과 관련한 적어도 하나의 명령어를 저장하는 메모리, 상기 메모리와 전기적으로 연결되는 프로세서를 포함하고, 상기 프로세서 실행 중에 수행되는 상기 명령어는 지정된 컨텐츠 생성과 관련하여 할당된 컨텐츠 생성 버퍼를 복수개의 부분 영역들로 구분하고, 수신되는 현재 이미지와 이전 이미지의 중첩되는 영역을 기준으로 상기 이전 이미지와 상기 현재 이미지를 스티칭하고, 상기 스티칭된 이미지들이 상기 컨텐츠 생성 버퍼에 저장되면 상기 스티칭된 이미지의 부분 영역들 각각에 대하여 지정된 블록 단위로 병렬 인코딩하도록 설정될 수 있다.
본 발명의 실시 예에 따른 이미지 처리 방법은 전자 장치의 프로세서에 의해, 지정된 컨텐츠 생성과 관련하여 할당된 컨텐츠 생성 버퍼를 복수개의 부분 영역들로 구분하는 동작, 수신되는 현재 이미지와 이전 이미지의 중첩되는 영역을 기준으로 상기 이전 이미지와 상기 현재 이미지를 스티칭하는 동작, 상기 스티칭된 이미지들이 상기 컨텐츠 생성 버퍼에 저장되면 상기 스티칭된 이미지의 부분 영역들 각각에 대하여 지정된 블록 단위로 병렬 인코딩하는 동작을 포함할 수 있다.
상술한 바와 같이 다양한 실시 예들은 스티칭되는 이미지들을 부분적으로 구분한 후, 각 부분에 대하여 병렬 인코딩 함으로써, 효율적인 인코딩을 수행할 수 있도록 지원한다.
도 1은 본 발명의 실시 예에 따른 전자 장치의 운용 환경의 한 예를 나타낸 도면이다.
도 2는 본 발명의 실시 예에 따른 프로세서의 한 예를 나타낸 도면이다.
도 3은 본 발명의 실시 예에 따른 이미지 처리 방법을 나타낸 도면이다.
도 4는 본 발명의 실시 예에 따른 이미지 처리 방법의 다른 예를 나타낸 도면이다.
도 5는 본 발명의 실시 예에 따른 메모리 운용을 설명하는 도면이다.
도 6은 본 발명의 실시 예에 따른 전자 장치의 이미지 획득과 관련한 인터페이스를 설명하는 도면이다.
도 7은 본 발명의 실시 예에 따른 전자 장치의 이미지 재생과 관련한 인터페이스를 설명하는 도면이다.
도 8은 다양한 실시 예에 따른 전자 장치의 블록도를 나타낸다.
도 9는 다양한 실시 예에 따른 프로그램 모듈의 블록도를 나타낸다.
이하, 본 발명의 다양한 실시 예가 첨부된 도면을 참조하여 기재된다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 실시 예의 다양한 변경(modification), 균등물(equivalent), 및/또는 대체물(alternative)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다.
본 문서에서, "가진다", "가질 수 있다", "포함한다", 또는 "포함할 수 있다" 등의 표현은 해당 특징(예: 수치, 기능, 동작, 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.
본 문서에서, "A 또는 B", "A 또는/및 B 중 적어도 하나", 또는 "A 또는/및 B 중 하나 또는 그 이상" 등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. 예를 들면, "A 또는 B", "A 및 B 중 적어도 하나", 또는 "A 또는 B 중 적어도 하나"는, (1) 적어도 하나의 A를 포함, (2) 적어도 하나의 B를 포함, 또는 (3) 적어도 하나의 A 및 적어도 하나의 B 모두를 포함하는 경우를 모두 지칭할 수 있다.
다양한 실시 예에서 사용된 "제1", "제2", "첫째", 또는 "둘째" 등의 표현들은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 해당 구성요소들을 한정하지 않는다. 상기 표현들은 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 수 있다. 예를 들면, 제1 사용자 기기와 제2 사용자 기기는, 순서 또는 중요도와 무관하게, 서로 다른 사용자 기기를 나타낼 수 있다. 예를 들면, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 바꾸어 명명될 수 있다.
어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "(기능적으로 또는 통신적으로) 연결되어((operatively or communicatively) coupled with/to)" 있다거나 "접속되어(connected to)" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소(예: 제3 구성요소)를 통하여 연결될 수 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 다른 구성요소(예: 제3 구성요소)가 존재하지 않는 것으로 이해될 수 있다.
본 문서에서 사용된 표현 "~하도록 구성된(또는 설정된)(configured to)"은 상황에 따라, 예를 들면, "~에 적합한(suitable for)", "~하는 능력을 가지는(having the capacity to)", "~하도록 설계된(designed to)", "~하도록 변경된(adapted to)", "~하도록 만들어진(made to)", 또는 "~를 할 수 있는(capable of)"과 바꾸어 사용될 수 있다. 용어 "~하도록 구성(또는 설정)된"은 하드웨어적으로 "특별히 설계된(specifically designed to)"것만을 반드시 의미하지 않을 수 있다. 대신, 어떤 상황에서는, "~하도록 구성된 장치"라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 "~할 수 있는" 것을 의미할 수 있다. 예를 들면, 문구 "A, B, 및 C를 수행하도록 구성(또는 설정)된 프로세서"는 해당 동작을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서(generic-purpose processor)(예: CPU 또는 application processor)를 의미할 수 있다.
본 문서에서 사용된 용어들은 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 다른 실시 예의 범위를 한정하려는 의도가 아닐 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명의 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가질 수 있다. 일반적으로 사용되는 사전에 정의된 용어들은 관련 기술의 문맥 상 가지는 의미와 동일 또는 유사한 의미를 가지는 것으로 해석될 수 있으며, 본 문서에서 명백하게 정의되지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다. 경우에 따라서, 본 문서에서 정의된 용어일지라도 본 발명의 실시 예들을 배제하도록 해석될 수 없다.
본 발명의 다양한 실시 예들에 따른 전자 장치는, 예를 들면, 전자 장치는 스마트폰(smartphone), 태블릿 PC(tablet personal computer), 이동 전화기(mobile phone), 화상 전화기, 전자북 리더기(e-book reader), 데스크탑 PC (desktop PC), 랩탑 PC(laptop PC), 넷북 컴퓨터(netbook computer), 워크스테이션(workstation), 서버, PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 모바일 의료기기, 카메라, 또는 웨어러블 장치(wearable device)(예: 스마트 안경, 머리 착용형 장치(head-mounted-device(HMD)), 전자 의복, 전자 팔찌, 전자 목걸이, 전자 앱세서리(appcessory), 전자 문신, 스마트 미러, 또는 스마트 와치(smart watch))중 적어도 하나를 포함할 수 있다.
어떤 실시 예들에서, 전자 장치는 스마트 가전 제품(smart home appliance)일 수 있다. 스마트 가전 제품은, 예를 들면, 텔레비전, DVD 플레이어, 오디오, 냉장고, 에어컨, 청소기, 오븐, 전자레인지, 세탁기, 공기 청정기, 셋톱 박스(set-top box), 홈 오토매이션 컨트롤 패널(home automation control panel), 보안 컨트롤 패널(security control panel), TV 박스(예: 삼성 HomeSync™, 애플TV™, 또는 구글 TV™), 게임 콘솔(예: Xbox™, PlayStation™), 전자 사전, 전자 키, 캠코더, 또는 전자 액자 중 적어도 하나를 포함할 수 있다.
다른 실시 예에서, 전자 장치는, 각종 의료기기(예: 각종 휴대용 의료측정기기(혈당 측정기, 심박 측정기, 혈압 측정기, 또는 체온 측정기 등), MRA(magnetic resonance angiography), MRI(magnetic resonance imaging), CT(computed tomography), 촬영기, 또는 초음파기 등), 네비게이션(navigation) 장치, GPS 수신기(global positioning system receiver), EDR(event data recorder), FDR(flight data recorder), 자동차 인포테인먼트(infotainment) 장치, 선박용 전자 장비(예: 선박용 항법 장치, 자이로콤파스 등), 항공 전자기기(avionics), 보안 기기, 차량용 헤드 유닛(head unit), 산업용 또는 가정용 로봇, 금융 기관의 ATM(automatic teller's machine), 상점의 POS(point of sales), 또는 사물 인터넷 장치(internet of things)(예: 전구, 각종 센서, 전기 또는 가스 미터기, 스프링클러 장치, 화재경보기, 온도조절기(thermostat), 가로등, 토스터(toaster), 운동기구, 온수탱크, 히터, 보일러 등) 중 적어도 하나를 포함할 수 있다.
어떤 실시 예에 따르면, 전자 장치는 가구(furniture) 또는 건물/구조물의 일부, 전자 보드(electronic board), 전자 사인 수신 장치(electronic signature receiving device), 프로젝터(projector), 또는 각종 계측 기기(예: 수도, 전기, 가스, 또는 전파 계측 기기 등) 중 적어도 하나를 포함할 수 있다. 다양한 실시 예에서, 전자 장치는 전술한 다양한 장치들 중 하나 또는 그 이상의 조합일 수 있다. 어떤 실시 예에 따른 전자 장치는 플렉서블 전자 장치일 수 있다. 또한, 본 발명의 실시 예에 따른 전자 장치는 전술한 기기들에 한정되지 않으며, 기술 발전에 따른 새로운 전자 장치를 포함할 수 있다.
이하, 첨부 도면을 참조하여, 다양한 실시 예에 따른 전자 장치가 설명된다. 본 문서에서, 사용자라는 용어는 전자 장치를 사용하는 사람 또는 전자 장치를 사용하는 장치 (예: 인공지능 전자 장치)를 지칭할 수 있다.
도 1은 본 발명의 실시 예에 따른 전자 장치의 운용 환경의 한 예를 나타낸 도면이다.
도 1을 참조하면, 한 실시 예에 따른 전자 장치 운용 환경은 예컨대, 전자 장치(100), 외부 전자 장치(101, 102), 네트워크(162), 서버(106) 등을 포함할 수 있다. 상술한 전자 장치 운용 환경은 전자 장치(100)가 외부 전자 장치(101, 102) 또는 서버(106)로부터 이미지를 획득할 수 있도록 지원한다. 또는, 전자 장치(100)는 본 발명의 실시 예에 따라 이미지 처리된 컨텐츠를 외부 전자 장치(101, 102) 또는 서버(106)에 전송할 수 있다. 이와 관련하여, 전자 장치(100) 또는 외부 전자 장치(101, 102), 또는 서버(106)는 네트워크(162) 또는 근거리 통신(164)을 통하여 서로 연결될 수 있다.
본 발명의 실시 예에 따른 전자 장치(100)가 카메라를 포함하고, 상기 카메라를 기반으로 이미지를 획득하여 메모리에 저장하는 동작을 수행하는 경우, 이미지 처리와 관련한 전자 장치 운용 환경은 외부 전자 장치(101, 102), 네트워크(162), 서버(106) 등의 구성을 생략하고, 전자 장치(100)만으로 구성될 수 있다.
한 실시 예에 따른 전자 장치(100)는 버스(110), 프로세서(120), 메모리(130), 입출력 인터페이스(150) (or input/output device), 디스플레이(160), 통신 인터페이스(170) (또는 communication circuitry) 및 카메라(180)를 포함할 수 있다.
상기 버스(110)는 전자 장치(100)의 구성 요소들(예: 프로세서(120), 메모리(130), 입출력 인터페이스(150), 디스플레이(160), 통신 인터페이스(170) 및 카메라(180)) 간의 신호 전달을 수행할 수 있다. 예컨대, 버스(110)는 카메라(180)가 수집한 적어도 하나의 이미지를 프로세서(120)에 전달하고, 프로세서(120)에 의해 처리된 컨텐츠를 상기 메모리(130) 또는 상기 디스플레이(160) 중 적어도 하나에 전달할 수 있다. 또는, 버스(110)는 상기 프로세서(120)에 의해 처리된 컨텐츠를 외부 전자 장치(101, 102) 또는 서버(106)와 통신 채널을 형성한 통신 인터페이스(170)에 전달할 수 있다.
상기 프로세서(120)는 예컨대, 중앙처리장치(Central Processing Unit (CPU)), 어플리케이션 프로세서(Application Processor (AP)), 또는 커뮤니케이션 프로세서(Communication Processor (CP) 중 하나 또는 그 이상을 포함할 수 있다. 프로세서(120)는, 예를 들면, 전자 장치(100)의 적어도 하나의 다른 구성요소들의 제어 및/또는 통신에 관한 연산이나 데이터 처리를 실행할 수 있다. 한 실시 예에 따르면, 프로세서(120)는 사용자 입력에 대응하여 카메라(180)를 활성화하고, 카메라(180)가 획득한 복수의 이미지들을 기반으로 지정된 형태의 컨텐츠를 생성할 수 있다. 예컨대, 프로세서(120)는 복수의 이미지들에 대한 스티칭 처리(예: 복수의 이미지 중 적어도 두 개의 이미지들의 유사 구역(예: 연속 촬영을 수행하는 경우 연속된 프레임들 간의 가장자리 영역)을 기준으로 붙이는 정합 처리(예: 붙이는 영역 및 붙임 영역의 주변부를 블랜딩하는 블랜딩 처리 중 적어도 하나의 처리)를 수행하면서, 순차적으로 인코딩(예: JPEG 인코딩 또는 JPEG 압축)을 수행할 수 있다.
상기 프로세서(120)는 이미지 수집이 완료되면, 순차적으로 압축한 영역들을 통합하여 하나의 컨텐츠(예: 파노라마 영상)를 생성하고, 생성된 컨텐츠를 메모리(130)에 저장하거나 또는 디스플레이(160)에 출력할 수 있다. 상술한 동작에서, 프로세서(120)는 입력되는 이미지들을 일정 크기의 부분 영역들(예: 일정 개수의 픽셀들을 하나의 그룹으로 묶어서 구분한 열들(rows) 또는 행들(columns)에 해당하는 영역들)로 구분하고, 각각의 부분 영역들을 일정 블록 단위(예: 적어도 하나의 인코딩 단위 블록으로, 적어도 하나의 부분 영역들)로 병렬 인코딩을 수행할 수 있다. 상기 프로세서(120)는 인코딩 단위 블록의 크기 또는 생성하고자 하는 컨텐츠의 크기에 따라 부분 영역들의 크기를 결정할 수 있다.
상기 메모리(130)는, 휘발성 및/또는 비휘발성 메모리를 포함할 수 있다. 메모리(130)는, 예를 들면, 전자 장치(100)의 적어도 하나의 다른 구성요소에 관계된 명령 또는 데이터를 저장할 수 있다. 한 실시 예에 따르면, 메모리(130)는 소프트웨어 및/또는 프로그램(140)을 저장할 수 있다. 프로그램(140)은, 예를 들면, 커널(141), 미들웨어(143), 어플리케이션 프로그래밍 인터페이스(Application Programming Interface (API))(145), 및/또는 어플리케이션 프로그램(또는 "어플리케이션")(147) 등을 포함할 수 있다. 커널(141), 미들웨어(143), 또는 API(145)의 적어도 일부는, 운영 시스템(Operating System (OS))으로 지칭될 수 있다.
커널(141)은, 예를 들면, 다른 프로그램들(예: 미들웨어(143), API(145), 또는 어플리케이션 프로그램(147))에 구현된 동작 또는 기능을 실행하는 데 사용되는 시스템 리소스들(예: 버스(110), 프로세서(120), 또는 메모리(130) 등)을 제어 또는 관리할 수 있다. 또한, 커널(141)은 미들웨어(143), API(145), 또는 어플리케이션 프로그램(147)에서 전자 장치(100)의 개별 구성요소에 접근함으로써, 시스템 리소스들을 제어 또는 관리할 수 있는 인터페이스를 제공할 수 있다.
미들웨어(143)는, 예를 들면, API(145) 또는 어플리케이션 프로그램(147)이 커널(141)과 통신하여 데이터를 주고받을 수 있도록 중개 역할을 수행할 수 있다. 또한, 미들웨어(143)는 어플리케이션 프로그램(147)으로부터 수신된 하나 이상의 작업 요청들을 우선 순위에 따라 처리할 수 있다. 예를 들면, 미들웨어(143)는 어플리케이션 프로그램(147) 중 적어도 하나에 전자 장치(100)의 시스템 리소스(예: 버스(110), 프로세서(120), 또는 메모리(130) 등)를 사용할 수 있는 우선 순위를 부여할 수 있다. 예컨대, 미들웨어(143)는 상기 적어도 하나에 부여된 우선 순위에 따라 상기 하나 이상의 작업 요청들을 처리함으로써, 상기 하나 이상의 작업 요청들에 대한 스케쥴링 또는 로드 밸런싱 등을 수행할 수 있다.
API(145)는, 예를 들면, 어플리케이션(147)이 커널(141) 또는 미들웨어(143)에서 제공되는 기능을 제어하기 위한 인터페이스로, 예를 들면, 파일 제어, 창 제어, 영상 처리, 또는 문자 제어 등을 위한 적어도 하나의 인터페이스 또는 함수(예: 명령어)를 포함할 수 있다.
상술한 메모리(130)는 카메라(180)가 수집한 적어도 하나의 이미지를 저장할 수 있다. 예컨대, 메모리(130)는 복수개의 이미지를 이어 붙인 컨텐츠(예: 파노라마 영상)를 저장할 수 있다. 한 실시 예에 따르면, 상기 메모리(130)는 상기 복수개의 이미지의 적어도 일부가 저장되는 일정 크기의 컨텐츠 생성 버퍼(또는 버퍼 메모리)를 포함할 수 있다. 상기 일정 크기의 컨텐츠 생성 버퍼는 복수개의 부분 영역들로 구분될 수 있다. 예컨대, 상기 컨텐츠 생성 버퍼는 한 변을 일정 크기로 구분한 복수개의 부분 영역들을 포함하며, 상기 부분 영역들은 일정 개수의 픽셀들을 포함할 수 있다. 예컨대, 하나의 부분 영역은 적어도 하나의 인코딩 단위 블록에 해당하는 소부분 영역을 가지며, 하나의 인코딩 단위 블록은 일정 개수의 픽셀들(예: 16*16)로 구성될 수 있다. 상기 부분 영역들 간의 크기는 동일 또는 유사할 수 있다. 상기 컨텐츠 생성 버퍼는 일부 영역이 동일 또는 유사한 이미지들의 스티칭 및 스티칭된 이미지들의 인코딩 과정에 이용될 수 있다. 또한, 상기 컨텐츠 생성 버퍼에 배치된 스티칭되고 인코딩된 영역들은 이미지 수집 종료 시 통합되어 하나의 컨텐츠(예: 지정된 방식으로 인코딩된 파노라마 영상)로 변환 될 수 있다.
상기 입출력 인터페이스(150)는, 예를 들면, 사용자로부터 입력된 명령 또는 다른 외부 기기로부터 입력된 데이터를 전자 장치(100)의 다른 구성요소(들)에 전달할 수 있는 인터페이스의 역할을 할 수 있다. 또한, 입출력 인터페이스(150)는 전자 장치(100)의 다른 구성요소(들)로부터 수신된 명령 또는 데이터를 사용자 또는 다른 외부 기기로 출력할 수 있다. 한 실시 예에 따르면, 상기 입출력 인터페이스(150)는 카메라(180) 활성화와 관련한 입력 신호, 지정된 방식의 컨텐츠 생성을 요청하거나 지정된 방식을 선택하는 입력 신호, 컨텐츠의 저장 또는 출력을 요청하는 입력 신호, 출력된 컨텐츠의 재생 제어와 관련한 입력 신호 등을 사용자 입력에 대응하여 생성할 수 있다. 다양한 실시 예에 따르면, 상기 입출력 인터페이스(150)는 오디오 장치를 포함할 수 있다. 상기 오디오 장치는 상기 카메라(180) 운용과 관련한 적어도 하나의 오디오 정보(예: 카메라(180) 촬영과 관련하여 사전 저장된 안내 정보 또는 효과음)를 출력할 수 있다. 또는, 오디오 장치는 카메라(180) 운용 시 오디오 신호를 수집할 수 있다.
디스플레이(160)는, 예를 들면, 액정 디스플레이(Liquid Crystal Display (LCD)), 발광 다이오드(Light-Emitting Diode (LED)) 디스플레이, 유기 발광 다이오드(Organic LED (OLED)) 디스플레이, 또는 마이크로 전자기계 시스템(microelectromechanical systems, MEMS) 디스플레이, 또는 전자 종이(electronic paper) 디스플레이를 포함할 수 있다. 디스플레이(160)는, 예를 들면, 사용자에게 각종 컨텐츠(예: 텍스트, 이미지, 비디오, 아이콘, 또는 심볼 등)를 표시할 수 있다. 디스플레이(160)는, 터치 스크린을 포함할 수 있으며, 예를 들면, 전자 펜 또는 사용자의 신체의 일부를 이용한 터치, 제스처, 근접, 또는 호버링(hovering) 입력을 수신할 수 있다. 한 실시 예에 따르면, 디스플레이(160)는 카메라(180) 활성화와 관련한 사용자 인터페이스(예: 카메라 어플리케이션 실행 화면), 지정된 방식의 컨텐츠 수집과 관련한 사용자 인터페이스, 복수의 이미지를 기반으로 생성된 지정된 방식의 컨텐츠의 저장 또는 출력과 관련한 사용자 인터페이스를 출력할 수 있다.
상기 통신 인터페이스(170)는, 예를 들면, 전자 장치(100)와 외부 장치(예: 제2 전자 장치(102) 또는 서버(106)) 간의 통신을 설정할 수 있다. 예를 들면, 통신 인터페이스(170)는 무선 통신 또는 유선 통신을 통해서 네트워크(162)에 연결되어 외부 장치(예: 제2 전자 장치(102) 또는 서버(106))와 통신할 수 있다.
무선 통신은, 예를 들면 셀룰러 통신 프로토콜로서, LTE(Long-Term Evolution), LTE-A(LTE-Advanced), CDMA(Code Division Multiple Access), WCDMA(Wideband CDMA), UMTS(Universal Mobile Telecommunications System), WiBro(Wireless Broadband), 또는 GSM(Global System for Mobile Communications) 중 적어도 하나를 사용할 수 있다. 또는 통신 인터페이스(170)는 제1 전자 장치(101)와 통신할 수 있는 근거리 통신 모듈(예: BT, WIFI 통신 하드웨어 인터페이스)을 포함할 수 있다. 다양한 실시 예에 따른 상기 통신 인터페이스(170)는 NFC(Near Field Communication), MST(magnetic stripe transmission), 스캐너 통신 등을 수행할 수 있는 적어도 하나의 통신 모듈을 포함할 수 있다. 한 실시 예에 따르면, 상기 통신 인터페이스(170)는 프로세서(120) 제어에 대응하여 지정된 방식으로 인코딩된 컨텐츠(예: JPEG 파노라마 영상)를 외부 전자 장치(예: 제1 전자 장치(101), 제2 전자 장치(102), 서버(106))에 전송할 수 있다.
상기 카메라(180)는 사용자 입력 또는 전자 장치의 설정에 대응하여 활성화되고, 피사체 관련 이미지를 획득할 수 있다. 카메라(180)는 획득한 이미지를 프로세서(120)에 전달할 수 있다. 한 실시 예에 따르면, 카메라(180)는 사용자 입력에 대응하여 복수의 이미지를 수집하거나 또는 지정된 주기로 복수의 이미지를 자동으로 수집할 수 있다. 카메라(180)는 사용자 입력에 대응하여 연속 촬영한 복수의 이미지들 또는 자동으로 연속 촬영한 복수의 이미지들을 순차적으로 프로세서(120)에 전달할 수 있다. 자동 연속 촬영 시, 상기 카메라(180)는 초당 수 프레임 또는 수십 프레임의 이미지들을 획득하고, 획득된 이미지들을 순차적으로 또는 실시간으로 프로세서(120)에 전달할 수 있다.
상술한 설명에서는 카메라(180)가 전자 장치(100)에 포함되는 형태로 도시하였으나, 본 발명이 이에 한정되는 것은 아니다. 예컨대, 상기 카메라(180)는 전자 장치(180)와 독립적인 구성으로 마련되고, 통신 인터페이스를 통하여 전자 장치(180)에 촬영된 또는 저장된 복수의 이미지를 전송할 수 있다. 한 실시 예에 따르면, 블루투스 통신 인터페이스를 기반으로 카메라(180)는 획득한 적어도 하나의 이미지 및 획득한 적어도 하나의 프리뷰 이미지를 전자 장치(100)에 전송할 수 있다.
전자 장치(100)의 프로세서(120)는 카메라가 전송하는 이미지들을 기반으로 지정된 방식의 컨텐츠(예: 이하에서 설명한 파노라마 영상)를 생성할 수 있다. 컨텐츠 생성 과정에서, 전자 장치(100)의 프로세서(120)는 수신된 복수의 이미지들에 대한 순차적인 버퍼링, 스티칭 처리, 또는 인코딩을 수행할 수 있다. 이 동작에서 전자 장치(100)의 프로세서(120)는 복수의 이미지들 중 유사 영역의 범위가 일정 범위 내에 있는 이미지를 선택하여 운용할 수도 있다.
제1 및 제2 외부 전자 장치(101, 102) 각각은 전자 장치(100)와 동일한 또는 다른 종류의 장치일 수 있다. 한 실시 예에 따르면, 서버(106)는 하나 또는 그 이상의 서버들의 그룹을 포함할 수 있다. 다양한 실시 예에 따르면, 전자 장치(100)에서 실행되는 동작들의 전부 또는 일부는 다른 하나 또는 복수의 전자 장치(예: 전자 장치(101, 102) 또는 서버(106))에서 실행될 수 있다. 한 실시 예에 따르면, 전자 장치(100)의 어떤 기능이나 서비스를 자동으로 또는 요청에 의하여 수행해야 할 경우에, 전자 장치(100)는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 그와 연관된 적어도 일부 기능을 다른 장치(예: 전자 장치(101, 102) 또는 서버(106))에게 요청할 수 있다. 다른 전자 장치(예: 전자 장치(101, 102) 또는 서버(106))는 요청된 기능 또는 추가 기능을 실행하고, 그 결과를 전자 장치(100)로 전달할 수 있다. 전자 장치(100)는 수신된 결과를 그대로 또는 추가적으로 처리하여 요청된 기능이나 서비스를 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다.
도 2는 본 발명의 실시 예에 따른 프로세서의 한 예를 나타낸 도면이다.
도 2를 참조하면, 본 발명의 실시 예에 따른 프로세서(120)는 이미지 신호 처리 모듈(121)(예: ISP, image signal processor), 입력 버퍼 관리 모듈(123), 컨텐츠 생성 모듈(125), 인코더(129), 출력 처리 모듈(127)을 포함할 수 있다. 상술한 프로세서(120)에 포함되는 모듈들은 적어도 하나의 하드웨어 요소 또는 적어도 하나의 소프트웨어 모듈로 구현될 수 있다.
상기 이미지 신호 처리 모듈(121)은 카메라(180)가 수집한 이미지를 수신할 수 있다. 상기 이미지 신호 처리 모듈(121)은 카메라(180)로부터 수신한 이미지를 후처리하는 하드웨어 모듈로서, 상기 카메라(180) 또는 프로세서(120)에 포함될 수 있다. 이미지 신호 처리 모듈(121)은 카메라(180)로부터 수신된 이미지를 입력 버퍼 관리 모듈(123)에 전달할 수 있다.
상기 입력 버퍼 관리 모듈(123)은 이미지 신호 처리 모듈(121)이 전달한 이미지를 스트림(stream)으로 관리할 수 있다. 이와 관련하여, 상기 입력 버퍼 관리 모듈(123)은 복수의 이미지와 관련한 프레임 버퍼를 관리할 수 있다. 예컨대, 상기 입력 버퍼 관리 모듈(123)은 링 버퍼 형태의 프레임 버퍼를 관리할 수 있다. 상기 입력 버퍼 관리 모듈(123)은 컨텐츠 생성 모듈(125) 또는 출력 처리 모듈(127)에 이미지(예: 버퍼에 저장된 이미지)를 전달할 수 있다. 상기 입력 버퍼 관리 모듈(123)은 사용자 인터페이스와 관련한 데이터를 출력 처리 모듈(127)에 전달할 수 있다.
상기 컨텐츠 생성 모듈(125)은 컨텐츠(예: 파노라마 영상)를 생성할 버퍼를 할당할 수 있다. 한 실시 예에 따르면, 컨텐츠 생성 모듈(125)은 지정된 방식의 컨텐츠 생성과 관련하여 이미지를 연속적으로 획득할 방향 정보(또는 촬영 방향 정보)를 획득할 수 있다. 예컨대, 컨텐츠 생성 모듈(125)은 적어도 하나의 센서를 이용하여 전자 장치(100)의 움직임 방향 정보를 획득할 수 있다. 이와 관련하여, 전자 장치(100)는 움직임 방향 검출과 관련한 적어도 하나의 센서(예: 가속도 센서, 지자기 센서)를 포함할 수 있다. 또는, 컨텐츠 생성 모듈(125)은 수신되는 이미지 분석을 기반으로 전자 장치(100)의 움직임 방향 정보를 획득할 수 있다. 예컨대, 컨텐츠 생성 모듈(125)은 방향 정보를 결정하기 위해 지정된 시간 동안 획득된 이미지들을 비교하거나 또는 특정 시점의 이미지와 상기 특정 시점 이후 이미지를 비교하고 이미지 변화를 기준으로 전자 장치(100)가 어떠한 방향으로 이동되는지를 판단할 수 있다. 예컨대, 컨텐츠 생성 모듈(125)은 이전 이미지 및 이후 이미지에 공통으로 포함된 특징점들을 추출하고, 특징점들의 이동 방향의 적어도 일부를 기반으로 방향 변화를 결정할 수 있다.
컨텐츠 생성 모듈(125)은 연속적으로 이미지를 획득할 방향이 결정되면, 결정된 방향에 대응하는 컨텐츠 생성 버퍼를 할당할 수 있다. 한 실시 예에 따르면, 컨텐츠 생성 모듈(125)은 제1 방향(예: 좌우방향)에 따른 컨텐츠 생성 버퍼의 크기와 제2 방향(예: 상하방향)에 따른 컨텐츠 생성 버퍼의 크기를 다르게 할당할 수 있다. 예를 들어, 컨텐츠 생성 모듈(125)은 제1 방향과 관련한 컨텐츠 생성 버퍼의 크기를 제2 방향과 관련한 컨텐츠 생성 버퍼의 크기보다 크게 할당할 수 있다. 상기 컨텐츠 생성 모듈(125)은 할당된 컨텐츠 생성 버퍼의 한 변을 지정된 일정 크기 및 일정 개수의 인코딩 단위 블록들로 구분하거나, 복수개의 부분 영역들(예: 하나의 부분 영역에 복수의 인코딩 단위 블록을 할당)로 구분할 수 있다. 복수개의 부분 영역들의 크기는 인코딩할 이미지의 크기에 따라 달라질 수 있다.
복수개의 부분 영역들에 저장된 이미지들은 병렬 인코딩될 수 있다. 이 동작에서 컨텐츠 생성 버퍼에 저장된 이미지들은 한 방향의 부분 영역들 내에서 지정된 블록 단위로 인코딩될 수 있다. 예를 들면, 폭이 3840 픽셀인 이미지가 있고, 인코딩 단위 블록이 16*16일 경우, 컨텐츠 생성 모듈(125)은 이미지를 240(3840/16)개의 소부분 영역들로 나눌 수 있다. 컨텐츠 생성 모듈(125)은 일정 개수의 소부분 영역들(예: 40개의 소부분 영역들)을 부분 영역으로 지정하고, 지정된 부분 영역들에 배치되는 이미지를 지정된 일정 개수의 쓰레드에 할당할 수 있다. 상기 쓰레드의 개수는 부분 영역들의 개수에 대응하여 달라질 수 있다. 이 동작에서, 컨텐츠 생성 모듈(125)은 프로세스의 성능에 따라서 병렬로 처리하기 위한 쓰레드의 개수를 조절할 수 있다. 예를 들어, 6개의 쓰레드를 이용하여 240개의 소부분 영역을 병렬로 처리한다고 할 때, 컨텐츠 생성 모듈(125)은 각 쓰레드가 40개씩의 소부분 영역들을 처리하도록 부분 영역들을 할당할 수 있다. 또는, 컨텐츠 생성 모듈(125)은 다른 쓰레드에 비하여 상대적으로 빠르게 데이터 처리가 완료된 쓰레드에서 더 많은 소부분 영역을 담당하도록 처리할 수 있다. 다양한 실시 예에 따르면, 지정된 방식의 컨텐츠(예: 파노라마 영상) 생성과 관련하여, 초기 이미지에 대해서는 상술한 바와 같이 240개의 소부분 영역들을 6개의 쓰레드를 통해 6개의 부분 영역 단위로 처리할 수 있다. 초기 이미지와 스티칭되는 두 번째 이후 이미지들은 상하 흔들림에 의하여 이전 영상과 스티칭되어 인코딩 처리되어야 하는 소부분 영역들이 감소(예: 상하 흔들림 발생의 경우 스티칭되는 영역은 이전 이미지와 중첩되는 영역만 유효하기 때문에 이후 이미지에서 처리될 소부분 영역들이 감소)할 수 있다. 이에 따라, 컨텐츠 생성 모듈(125)은 두 번째 이후의 영상들이 입력된 경우에는 실제 240개보다 적은 소부분 영역에 대한 이미지를 인코딩(예: 220개)할 수 있다. 컨텐츠 생성 모듈(125)은 220개의 소부분 영역들에 대하여 지정된 개수(예: 6개)의 쓰레드에 적절하게(예: 운영체제가 지원하는 데이터 처리 포맷 등에 따라 균등 또는 비균등) 할당하여 처리할 수 있다.
상기 컨텐츠 생성 모듈(125)은 입력 버퍼 관리 모듈(123)이 제공하는 이미지들을 분석하여 스티칭할 수 있다. 예컨대, 컨텐츠 생성 모듈(125)은 이전 이미지의 적어도 일부 영역과 현재 이미지의 적어도 일부 영역들을 비교하여, 유사성이 높은 또는 동일한 특징점들을 가지는 영역들을 추출하고, 추출된 영역들을 기반으로 이전 이미지와 현재 이미지를 스티칭할 수 있다. 한 실시 예에 따르면, 컨텐츠 생성 모듈(125)은 제1 방향으로 이미지들을 획득하도록 결정되면, 이전 이미지의 우측(또는 좌측) 일부 영역과 현재 이미지의 좌측(또는 우측) 일부 영역 간의 유사성을 비교할 수 있다. 다양한 실시 예에 따르면, 컨텐츠 생성 모듈(125)은 이전 이미지의 우측(또는 좌측) 가장자리 일부 영역과 현재 이미지의 좌측(또는 우측) 가장자리 일부 영역의 유사성을 비교할 수도 있다. 컨텐츠 생성 모듈(125)은 제2 방향으로 이미지들을 획득하도록 결정되면, 이전 이미지의 상측(또는 하측) 일부 영역과 현재 이미지의 하측(또는 상측) 일부 영역 간의 유사성을 비교할 수 있다. 컨텐츠 생성 모듈(125)은 이전 이미지 영역과 현재 이미지 영역 중 유사성이 높은 영역들을 중첩하여 배치하고, 이에 연속되게 다음 이미지 영역들을 중첩하여 배치할 수 있다. 상기 컨텐츠 생성 모듈(125)은 이전 이미지와 현재 이미지 간의 경계 부분에서 필요에 따라, 블랜딩 처리(예: 서로 다른 이미지 차이를 줄여주도록 색상 처리)를 할 수 있다.
상기 컨텐츠 생성 모듈(125)은 획득되는 이미지들의 유사 영역 비율을 확인하고, 상기 유사 영역 비율을 기반으로 이미지들의 스티칭 여부를 결정할 수 있다. 예컨대, 컨텐츠 생성 모듈(125)은 이전 이미지와 현재 이미지의 유사 영역의 비율이 지정된 비율 이상인 경우 현재 이미지를 스티칭에 이용하지 않도록 처리(예: 상대적으로 많은 영역들이 비슷한 경우 스티칭을 통해 확장할 이미지 영역이 상대적으로 없음)할 수 있다. 또는, 컨텐츠 생성 모듈(125)은 컨텐츠 생성 버퍼에 저장된 이전 이미지 이후 복수의 이미지들 중에 이전 이미지와 지정된 비율(예: 30%, 40%, 50% 등)의 유사 영역 범위를 가지는 이미지를 선택하여 이전 이미지와 스티칭할 수 있다. 스티칭할 이미지들을 선택하는 동작은 예컨대, 입력 버퍼 관리 모듈(123)에서 수행될 수도 있다.
상기 컨텐츠 생성 모듈(125)은 스티칭할 부분에 대한 정보를 인코더(129)에 제공하여 인코딩 수행을 지원할 수 있다. 다양한 실시 예에 따르면, 컨텐츠 생성 모듈(125)은 인코더(129)에 의해 인코딩된 블록 영역들에 대한 정보를 획득하고, 획득된 블록 영역들을 기반으로 다음 이미지에 대하여 스티칭할 경계 영역들을 산출할 수 있다. 상기 컨텐츠 생성 모듈(125)은 이미지 수집이 완료되면, 이미지 수집 완료에 따른 컨텐츠 통합 처리를 제어할 수 있다. 예컨대, 컨텐츠 생성 모듈(125)은 이미지 수집이 완료되면, 인코더(129)에 인코딩된 블록들에 대한 통합 처리를 요청할 수 있다.
상기 인코더(129)는 상기 컨텐츠 생성 모듈(125)이 전달한 이미지를 지정된 방식의 컨텐츠(예: JPEG 파노라마 영상)로 인코딩할 수 있다. 상기 인코더(129)는 출력 처리 모듈(127)과 독립적으로 동작할 수 있어, 출력 처리 모듈(127)에 의해 디스플레이(160)에 프리뷰가 진행되는 동안 인코더(129)는 인코딩을 수행하여 인코딩 결과 파일을 빠르게 생성할 수 있다. 상기 인코더(129)는 컨텐츠 생성 버퍼에 일정 방향으로 구분한 부분 영역들에 대응하는 복수의 쓰레드(thread)를 할당하고, 복수의 쓰레드를 동시에 인코딩하는 병렬 인코딩을 수행할 수 있다. 이때, 인코더(129)는 각 쓰레드에 할당된 이미지들의 부분 영역들을 지정된 크기의 블록 단위로 인코딩할 수 있다. 예컨대, 인코더(129)는 16*16 단위의 인코딩 단위 블록을 기준으로 40개(예: 한 픽셀의 크기가 3840인 경우)의 소 부분 영역의 데이터들이 각각 할당된 지정된 개수(예: 프로세서가 지원하는 쓰레드의 개수)의 부분 영역들을 병렬로 인코딩할 수 있다. 또는, 상기 인코더(129)는 연속으로 수신되는 이미지의 스티칭 처리마다 인코딩을 수행할 수 있다. 상기 인코더(129)는 이전 이미지의 부분영역들 중 마지막 영역에 배치된 인코딩된 블록을 참조하여, 다음 이미지의 부분 영역들 중 처음 영역에 배치된 블록의 인코딩을 수행할 수 있다. 다양한 실시예에 따르면, 상기 지정된 크기의 인코딩 단위 블록은 상기 인코더(129)의 설정에 기반하여, 다양한 크기로 변경될 수 있다.
상기 인코더(129)는 컨텐츠 생성 모듈(125)로부터 이미지 수집 종료를 수신하면, 컨텐츠에 대한 헤더(예: JPEG 헤더)를 할당하고, 인코딩한 이미지들의 부분 영역들의 마지막 영역에서 지정된 식별자(예: restarter)를 기입할 수 있다. 또는 상기 인코더(129)는 컨텐츠의 마지막 인코딩 블록을 지시하기 위한 종료 식별자(예: end of indicator)를 기입할 수 있다. 상기 지정된 식별자는 해당 부분 영역들 내에서 인코딩이 수행됨을 지시할 수 있다. 이에 따라, 해당 컨텐츠가 재생되는 동안 부분 영역들 별로 복호화가 수행되고, 복호된 이미지가 디스플레이(160) 등에 출력될 수 있다.
상기 출력 처리 모듈(127)은 입력 버퍼 관리 모듈(123)에서 받은 이미지를 디스플레이(160)로 출력하기 위한 처리를 수행할 수 있다. 상기 출력 처리 모듈(127)은 디스플레이(160)에 프리뷰 형태로 출력될 이미지의 버퍼를 생성할 수 있다. 예를 들어, 출력 처리 모듈(127)은 입력 버퍼 관리 모듈(123)에서 오는 이미지 및 사용자 인터페이스와, 컨텐츠 생성 모듈(125)에서 제공하는 컨텐츠를 병합하여 이미지 버퍼에 저장(예: 이미지 버퍼에 저장된 이미지는 디스플레이에 출력)할 수 있다. 상기 출력 처리 모듈(127)은 프로세서(120) 외에 하드웨어 컴포지터, GPU 등에 포함되어 이미지 출력과 관련한 처리를 수행할 수 있다.
상술한 다양한 실시 예에 따르면, 한 실시 예에 따른 전자 장치는 수집된 이미지 인코딩과 관련한 적어도 하나의 명령어를 저장하는 메모리, 상기 메모리와 전기적으로 연결되는 프로세서를 포함하고, 상기 프로세서 실행 중에 수행되는 상기 명령어는 지정된 컨텐츠 생성과 관련하여 할당된 컨텐츠 생성 버퍼를 복수개의 부분 영역들로 구분하고, 수신되는 현재 이미지와 이전 이미지의 중첩되는 영역을 기준으로 상기 이전 이미지와 상기 현재 이미지를 스티칭하고, 상기 스티칭된 이미지들이 상기 컨텐츠 생성 버퍼에 저장되면 상기 스티칭된 이미지의 부분 영역들 각각에 대하여 지정된 인코딩 단위 블록 크기와 지정된 개수 단위로 병렬 인코딩하도록 설정될 수 있다.
다양한 실시 예에 따르면, 상기 프로세서 실행 중에 수행되는 상기 명령어는 수신되는 프리뷰 이미지들을 움직임 변화를 기반으로 상기 컨텐츠 생성과 관련한 이미지 획득 방향을 결정하거나, 적어도 하나의 센서를 이용하여 상기 컨텐츠 생성과 관련한 이미지 획득 방향을 결정하도록 설정될 수 있다.
다양한 실시 예에 따르면, 상기 프로세서 실행 중에 수행되는 상기 명령어는 상기 촬영 방향에 따라 크기가 다른 컨텐츠 생성 버퍼를 할당하도록 설정될 수 있다.
다양한 실시 예에 따르면, 상기 프로세서 실행 중에 수행되는 상기 명령어는 제1 촬영 방향에 대응하여 제1 방향으로 제1 길이를 가지며 제2 방향으로 제2 길이를 가지는 컨텐츠 생성 버퍼 할당하거나, 제2 촬영 방향에 대응하여 제1 방향으로 상기 제1 길이보다 작은 제3 길이를 가지며 제2 방향으로 제2 길이를 가지는 컨텐츠 생성 버퍼 할당하도록 설정될 수 있다.
다양한 실시 예에 따르면, 상기 프로세서 실행 중에 수행되는 상기 명령어는 획득되는 이미지를 디스플레이의 배경 영역에 출력하고, 상기 스티칭된 이미지를 상기 배경 영역에 오버레이하여 출력하도록 설정될 수 있다.
다양한 실시 예에 따르면, 상기 프로세서 실행 중에 수행되는 상기 명령어는 상기 컨텐츠 생성 버퍼 전체 크기에 대응하는 비율의 미리 보기 영역을 상기 이미지 수집 중에 또는 이미지 수집 완료 후에 디스플레이에 출력하도록 설정될 수 있다.
다양한 실시 예에 따르면, 상기 프로세서 실행 중에 수행되는 상기 명령어는 상기 스티칭된 이미지에 대응하는 스티칭 영역 및 상기 컨텐츠 생성 버퍼 전체 크기에 대응하는 잔여 영역을 포함하는 상기 미리 보기 영역을 출력하도록 설정될 수 있다.
다양한 실시 예에 따르면, 상기 프로세서 실행 중에 수행되는 상기 명령어는 스티칭할 이미지 수집이 종료되면, 상기 각 부분 영역들의 마지막 블록에 부분 영역의 마지막 블록이 다른 부분 영역의 처음 블록 처리에 이용되지 않도록 지시하는 지정된 식별자를 배치하도록 설정하되, 컨텐츠의 마지막 부분 영역의 마지막 블록을 지시하는 종료 식별자를 컨텐츠의 마지막 부분 영역의 마지막 블록의 인접 영역에 배치하고, 전체 컨텐츠 영역에 대응하는 헤더 정보를 첫 번째 부분 영역의 전단에 배치하도록 설정될 수 있다.
다양한 실시 예에 따르면, 상기 프로세서 실행 중에 수행되는 상기 명령어는 수신되는 복수개의 이미지들 중 이전 이미지와의 유사 영역이 일정 범위 이내인 이미지를 선택하여 스티칭 처리하도록 설정될 수 있다.
다양한 실시 예에 따르면, 상기 프로세서 실행 중에 수행되는 상기 명령어는 이미지 스티칭 시 이전 이미지와 높이가 다른 현재 이미지 영역을 상기 컨텐츠 생성 버퍼의 버퍼링에서 제외하도록 설정될 수 있다.
도 3은 본 발명의 실시 예에 따른 이미지 처리 방법을 나타낸 도면이다.
도 3을 참조하면, 한 실시 예에 따른 이미지 처리 방법과 관련하여, 동작 301에서, 프로세서(120)(예: 이미지 신호 처리 모듈(121))는 영상 수집 기능과 관련한 입력 이벤트 처리를 수행할 수 있다. 사용자 입력이 영상 수집 기능과 관련이 없는 경우, 동작 303에서 프로세서(120)는 해당 사용자 입력의 종류에 대응하는 기능 수행을 처리할 수 있다. 예컨대, 프로세서(120)는 사용자 입력의 종류에 대응하여 통화 기능을 수행하거나 또는 서버(106) 또는 외부 전자 장치(101, 102)로부터 이미지를 수신할 수 있다.
영상 수집 기능과 관련한 입력 이벤트를 수신(예: 입출력 인터페이스(150)로부터 수신)하면, 동작 305에서 프로세서(120)(예: 이미지 신호 처리 모듈(121))는 카메라(180)를 활성화할 수 있다. 프로세서(예: 입력 버퍼 관리 모듈(123) 또는 출력 처리 모듈(127))는 카메라(180) 활성화 이후 지정된 사용자 인터페이스를 출력할 수 있다. 상기 지정된 사용자 인터페이스는 예컨대, 지정된 컨텐츠 생성(예: 파노라마 영상 생성)과 관련한 사용자 인터페이스를 포함할 수 있다.
동작 307에서, 프로세서(120)(예: 이미지 신호 처리 모듈(121))는 이미지가 수집(예: 카메라(180)로부터 전달)되는지 확인할 수 있다. 이미지가 카메라(180)로부터 전달되면, 상기 프로세서(120)(예: 입력 버퍼 관리 모듈(123))는 카메라(180)가 전달한 이미지를 수신하고, 수신된 이미지를 스트림 형태로 유지할 수 있다. 상기 프로세서(120)(예: 컨텐츠 생성 모듈(125))는 컨텐츠 생성 버퍼를 할당할 수 있다. 상기 프로세서(120)는 컨텐츠 생성 버퍼를 일정 크기의 부분 영역들로 구분할 수 있다. 예컨대, 프로세서(120)는 컨텐츠 생성 버퍼를 이미지들의 적어도 일부가 연속적으로 저장되는 방향을 기준으로 복수개의 열로 구분할 수 있다.
동작 309에서, 프로세서(예: 컨텐츠 생성 모듈(125))는 이미지 스티칭 처리를 수행할 수 있다. 프로세서(120)는 수신된 이미지를 지정된 크기로 할당한 컨텐츠 생성 버퍼에 저장할 수 있다. 컨텐츠 생성 모듈(125)은 수집된 이미지와 이전 이미지 간의 이미지 스티칭 처리를 수행할 수 있다. 예컨대, 컨텐츠 생성 모듈(125)은 최초 획득한 이미지 또는 이전 스티칭된 이미지 이후 수신된 복수의 이미지들 중 이전 이미지와 일정 유사도를 가지면서, 유사 영역이 지정된 범위 내의 이미지를 선택할 수 있다. 이를 기반으로, 컨텐츠 생성 모듈(125)은 유사한 이미지를 스티칭에 사용하지 않고, 적절한 유사 영역 범위를 가지는 이미지를 사용함으로써, 이미지들을 이어 붙이는데 보다 적은 연산량(예: 보다 적은 횟수의 이미지 비교, 선택 및 이미지들 간의 경계 영역에서의 색상 처리)으로 데이터 처리를 할 수 있다.
동작 311에서, 프로세서(120)(예: 인코더(129))는 병렬 인코딩을 수행할 수 있다. 예컨대, 인코더(129)는 컨텐츠 생성 버퍼에 저장된 이미지들의 부분 영역들별로 각각 병렬 인코딩을 수행할 수 있다. 이때, 인코더(129)는 이전 인코딩된 이전 이미지 영역을 제외하고, 새로 스티칭된 현재 이미지 영역들을 부분 영역별로 병렬 인코딩할 수 있다. 이와 관련하여, 부분 영역은 인코딩 단위 블록에 대응하는 소부분 영역을 적어도 하나 포함할 수 있다. 부분 영역의 소부분 영역 개수는 인코딩할 이미지의 크기, 프로세서의 성능, 할당되는 쓰레드의 성능 등에 따라 달라질 수 있다. 상기 인코더(129)는 새로 스티칭된 현재 이미지 영역들의 시작부분 블록을 이전 이미지 영역의 마지막 부분 블록을 참조하여 인코딩할 수 있다.
동작 313에서, 프로세서(120)(예: 이미지 신호 처리 모듈(121))은 이미지 수집 종료 여부를 확인할 수 있다. 이미지 수집이 종료되지 않은 경우, 프로세서(120)(예: 이미지 신호 처리 모듈(121), 입력 버퍼 관리 모듈(123) 및 컨텐츠 생성 모듈(125))는 동작 307 이전으로 분기하여 이하 동작을 재수행할 수 있다. 예컨대, 이미지 신호 처리 모듈(121)은 카메라(180)로부터 이미지를 수신하여 입력 버퍼 관리 모듈(123)에 전달하고, 입력 버퍼 관리 모듈(123)은 수신된 이미지를 컨텐츠 생성 모듈(125)에 전달할 수 있다.
이미지 수집이 종료되면, 동작 315에서, 프로세서(예: 컨텐츠 생성 모듈(125) 및 인코더(129))는 이미지 통합 처리를 수행할 수 있다. 예컨대, 프로세서(120)는 각 부분 영역들에 포함된 지정된 블록들에 대한 헤더(예: JPEG 헤더)를 작성하고, 작성된 헤더를 해당 컨텐츠와 관련한 데이터의 앞부분에 배치할 수 있다. 또한, 프로세서(120)는 컨텐츠 생성 버퍼에서 각 부분 영역들별 인코딩된 블록들을 정의하고, 부분 영역들의 마지막 부분에 지정된 식별자(예: restarter)를 배치할 수 있다. 상기 지정된 식별자는 다음 부분 영역의 시작 영역에 있는 블록 재생을 이전 부분 영역의 마지막 영역에 배치된 블록을 참조하지 않고 독립적으로 처리하도록 지시하는데 이용될 수 있다. 프로세서(120)는 컨텐츠 생성 버퍼의 부분 영역들 중 가장 마지막 부분 영역들의 종단 영역에 해당 컨텐츠의 마지막 블록임을 지시하는 종료 식별자를 배치할 수 있다.
동작 317에서, 프로세서(120)(예: 인코더(129) 또는 출력 처리 모듈(127))는 지정된 방식의 컨텐츠(예: JPEG 파노라마 영상)를 메모리(130)에 저장하거나 또는 디스플레이(160)에 출력할 수 있다.
도 4는 본 발명의 실시 예에 따른 이미지 처리 방법의 다른 예를 나타낸 도면이다.
도 4를 참조하면, 동작 401에서, 프로세서(120)(예: 이미지 신호 처리 모듈(121))는 영상 수집 기능과 관련한 입력 이벤트 처리를 수행할 수 있다. 사용자 입력이 영상 수집 기능과 관련이 없는 경우, 동작 403에서 프로세서(120)는 해당 사용자 입력의 종류에 대응하는 기능 수행을 처리할 수 있다. 예컨대, 프로세서(120)는 사용자 입력의 종류에 대응하여 통신 기능 또는 파일 검색 기능, 또는 파일 재생 기능 등을 처리할 수 있다.
영상 수집 기능과 관련한 이벤트가 발생하면, 프로세서(120)(예: 이미지 신호 처리 모듈(121))는 카메라(180)를 활성화할 수 있다. 카메라(180) 활성화 이후, 동작 405에서, 프로세서(예: 입력 버퍼 관리 모듈(123))는 촬영 방향 (또는 이미지 획득 방향)을 결정할 수 있다. 한 실시 예에 따르면, 프로세서(120)(예: 컨텐츠 생성 모듈(125))는 전자 장치(100)에 포함된 적어도 하나의 센서(예: 가속도 센서 또는 지자기 센서)를 이용하여 지정된 컨텐츠(예: 파노라마 영상) 생성과 관련한 초기 촬영 방향을 판단할 수 있다. 예컨대, 사용자가 전자 장치(100)를 좌측(또는 우측) 방향으로 이동 또는 회전시키는 경우, 프로세서(120)는 촬영 방향을 우측에서 좌측 방향으로(또는 좌측에서 우측 방향으로) 결정할 수 있다. 다양한 실시 예에 따르면, 프로세서(120)는 프리뷰 영상을 기반으로 촬영 방향을 판단할 수 있다. 예컨대, 프로세서(120)는 제1 시점(예: 파노라마 영상 촬영을 요청한 시점)의 프리뷰 영상을 기준으로 이후 입력되는 프리뷰 영상을 비교하여 영상의 움직임 방향을 분석하고, 분석 결과를 기반으로 촬영 방향을 결정할 수 있다. 이와 관련하여, 프로세서(120)는 지정된 컨텐츠 생성과 관련한 촬영 방향 결정을 안내하는 정보를 디스플레이(160)에 출력할 수 있다.
촬영 방향이 결정되면, 동작 407에서, 프로세서(120)(예: 컨텐츠 생성 모듈(125))는 촬영 방향에 따른 컨텐츠 생성 버퍼를 할당할 수 있다. 상기 프로세서(120)는 촬영 방향에 따라 컨텐츠 생성 버퍼의 크기 또는 형태를 다르게 할당할 수 있다. 예컨대, 상기 프로세서(120)는 촬영 방향이 제1 방향(예: 좌우방향)으로 결정되면 제1 크기의 제1 컨텐츠 생성 버퍼를 할당하고, 제2 방향(예: 상하 방향)으로 결정되면, 제2 크기의 제2 컨텐츠 생성 버퍼를 할당할 수 있다. 상기 제2 크기는 제1 크기보다 작을 수 있다. 또는 제1 컨텐츠 생성 버퍼 및 제2 컨텐츠 생성 버퍼가 직사각형 형태로 할당되는 경우, 제2 컨텐츠 생성 버퍼의 적어도 한 변의 크기는 제1 컨텐츠 생성 버퍼의 적어도 한 변의 크기보다 작을 수 있다. 한 실시 예에 따르면, 3840 * 2160 이미지를 처리하는 경우, 프로세서(120)는 촬영 방향에 따라, 3840 * 20000 컨텐츠 생성 버퍼를 할당하거나, 2160 * 20000 컨텐츠 생성 버퍼를 할당할 수 있다.
동작 409에서, 프로세서(120)(예: 컨텐츠 생성 모듈(125))는 컨텐츠 생성 버퍼를 복수개의 영역으로 구분할 수 있다. 한 실시 예에 따르면, 프로세서(120)는 이미지가 연속적으로 저장되는 방향과 관련하여 컨텐츠 생성 버퍼를 복수개의 영역들로 구분할 수 있다. 예컨대, 프로세서(120)는 컨텐츠 생성 버퍼를 이미지가 스티칭되는 방향과 나란한 복수개의 열들로 구분할 수 있다. 이에 따라, 컨텐츠 생성 버퍼는 복수개의 부분 영역들이 상하로 적층되는 형태가 될 수 있다.
동작 411에서, 프로세서(120)(예: 이미지 신호 처리 모듈(121))는 사용자 입력에 따른 또는 지정된 스케줄링에 따른 이미지 수집을 수행할 수 있다. 예컨대, 프로세서(120)는 (120)는 일정 주기로 연속 촬영되는 이미지를 카메라(180)로부터 수신할 수 있다.
동작 413에서, 프로세서(120)(예: 컨텐츠 생성 모듈(125))는 이미지 스티칭(예: 정합(image registration)을 처리하되, 추가적으로 또는 선택적으로 블랜딩(image blending) 처리를 수행할 수 있다. 예컨대, 프로세서(120)는 복수개의 이미지들 중 이전 지정된 이미지와 유사 영역이 일정 범위 이상 또는 일정 범위 이내에 있는 이미지를 선택하고, 선택된 이미지와 이전 지정된 이미지를 스티칭 처리할 수 있다. 상기 이전 지정된 이미지는 컨텐츠 생성 버퍼에 이전 저장된 이미지일 수 있다. 예컨대, 이전 지정된 이미지는 카메라(180)로부터 최초 획득한 이미지, 최초 획득한 이미지 이후 스티칭된 이미지들을 포함할 수 있다. 이미지 스티칭 동작에서, 프로세서(120)는 이미지들의 경계 영역에서 보다 자연스러운 색상 표현을 위하여 지정된 색상 처리(예: 블랜딩)를 수행할 수 있다.
동작 415에서, 프로세서(120)(예: 인코더(129))는 인코딩 영역을 계산할 수 있다. 예컨대, 프로세서(120)는 이전 저장된 이미지에 새롭게 스티칭되는 이미지 영역들을 새 인코딩 영역으로 추출할 수 있다. 동작 417에서, 프로세서(120)(예: 인코더(129))는 병렬 인코딩을 수행할 수 있다. 프로세서(120)는 인코딩 영역으로 추출된 이미지 영역들을 지정된 크기의 블록들 단위로 인코딩할 수 있다. 이 동작에서, 프로세서(120)는 이전 저장된 이미지 영역들 중 동일 부분 영역의 마지막 블록을 참조하여, 새 이미지 영역의 첫 번째 블록을 인코딩할 수 있다.
예를 들어, 프로세서(120)는 제1 방향 (예: 이미지 한 변이 3840 픽셀 크기인 방향)과 관련한 이미지 처리 과정에서, 인코딩 단위 블록(예: 16*16)에 해당하는 소부분 영역들(예: 240개)을 일정 개수의 쓰레드(예: 6개의 쓰레드)에 할당(균등 할당 또는 비균등 할당)하여 병렬 인코딩할 수 있다. 또는, 프로세서(120)는 제2 방향 (예: 이미지 한 변이 2160 픽셀 크기인 방향)과 관련한 이미지 처리 과정에서, 인코딩 단위 블록(예: 16*16)에 해당하는 소부분 영역들(예: 135개)을 일정 개수의 쓰레드(예: 6개의 쓰레드)에 할당(비균등 할당 또는 균등 할당)하여 병렬 인코딩할 수 있다. 한 실시 예에 따르면, 프로세서(120)는 상대적으로 빠른 처리 속도의 쓰레드에 상대적으로 많은 소부분 영역들을 할당하여 인코딩할 수 있다. 프로세서(120)는 스티칭 이후 처리해야 할 이미지 크기가 작아지는 경우, 작아진 크기의 이미지를 인코딩 단위 블록으로 나누고, 인코딩 단위 블록 크기의 소부분 영역들을 지정된 개수의 쓰레드 별(예: 각 부분 영역들)에 할당하여 병렬 인코딩할 수 있다.
동작 419에서, 프로세서(120)(예: 이미지 신호 처리 모듈(121))는 이미지 수집 종료 여부를 확인할 수 있다. 이미지 수집이 종료되지 않은 경우, 프로세서(120)는 동작 411 이전으로 분기하여 이하 동작을 재수행할 수 있다. 이미지 수집이 종료되면, 동작 421에서, 프로세서(120)(예: 컨텐츠 생성 모듈(125) 및 인코더(129))는 이미지 통합 처리를 수행할 수 있다. 동작 423에서, 프로세서(120)(예: 인코더(129) 또는 출력 처리 모듈(127))는 이미지 통합 처리된 컨텐츠를 메모리(130)에 저장하거나 또는 디스플레이(160)에 출력할 수 있다. 이미지 통합 처리 동작 및 저장 또는 출력 동작은 도 3에서 설명한 동작 315 및 동작 317과 동일하게 수행될 수 있다.
도 3 내지 도 4에 도시된 과정 내지 방법에 기재된 동작(예: 301 내지 317, 또는 401 내지 423) 들은 순차적, 병렬적, 반복적 또는 휴리스틱(heuristic)한 방법으로 실행될 수 있다. 예를 들면, 다른 순서로 실행되거나, 일부 동작이 생략되거나, 다른 동작이 추가될 수 있다.
도 5는 본 발명의 실시 예에 따른 메모리 운용을 설명하는 도면이다.
도 5를 참조하면, 프로세서(120)(예: 입력 버퍼 관리 모듈(123))는 메모리(130)에서 하나의 컨텐츠 크기에 대응하는 컨텐츠 생성 버퍼(30)를 할당할 수 있다. 상기 컨텐츠 생성 버퍼(30)는 예컨대, 501 상태에서와 같이 카메라(180)가 수집한 하나의 이미지 또는 설정에 따른 일정 크기의 이미지의 제1 방향의 길이와 동일한 픽셀들 수를 가지는 제1 변(30a)과, 제2 방향으로 지정된 길이의 픽셀들 수를 가지는 제2 변(30b)의 면적에 대응하는 메모리 영역을 포함할 수 있다. 제1 변(30a)은 복수개의 부분 영역들(30x)로 구분될 수 있다. 상기 복수개의 부분 영역들(30x)은 가로 방향으로 긴 길이를 가지도록 구분된 영역들일 수 있다. 예컨대, 복수개의 부분 영역들(30x)은 첫 번째 부분 영역(30_1), 두 번째 부분 영역(30_2), …, N번째 부분 영역(30_N)을 포함할 수 있다. 상기 복수개의 부분 영역들(30x)의 개수는 인코딩과 관련한 지정된 블록의 크기에 의하여 결정될 수 있다. 예컨대, 인코더(129)가 동시에 처리할 수 있는 픽셀의 개수가 증가할수록 블록의 크기는 증가할 수 있다. 또한, 인코더(129)가 처리할 수 있는 인코딩 단위 블록의 크기 및 개수에 따라 상기 부분 영역들의 크기는 달라질 수 있다.
각 부분 영역들(30x)의 폭은 이미지의 제1 방향(예: 폭 방향)에 배치된 복수의 픽셀들 중 일부 픽셀들의 개수에 대응할 수 있다. 예컨대, 이미지가 3840 X 2160 픽셀 사이즈를 가지고, 인코딩과 관련한 지정된 단위 블록의 크기가 16 X 16일 경우, 각 부분 영역들(30x)의 폭 길이는 16 픽셀 크기를 가고 개수가 240(= 3840 / 16)개로 결정될 수 있다. 부분 영역들(30x)의 개수가 결정되면, 프로세서(120)는 부분 영역들(30x) 각각을 지정된 크기의 블록(예: 인코딩 단위 블록들에 대응하는 소부분 영역 40개가 하나의 부분 영역의 폭 길이에 대응하도록 할당된 블록)으로 구분할 수 있다. 인코딩 단위 블록의 크기를 정사각형의 형태로 설명하지만, 설계 방식에 따라 인코딩 단위 블록의 크기는 직사각형의 형태로 마련될 수도 있다. 부분 영역들(30x)의 길이는 생성된 컨텐츠와 관련한 정책에 의해 결정될 수 있다. 한 실시 예에 따르면, 부분 영역들(30x)의 가로 방향 길이는 일정 픽셀 크기 예컨대 20000 픽셀 크기로 정의될 수 있다. 상기 부분 영역들(30x)의 가로 방향 길이는 컨텐츠 설정에 따라 부분 영역들(30x)의 길이는 더 적은 수의 픽셀들 크기 또는 더 많은 수의 픽셀들 크기를 가질 수 있다.
카메라(180)로부터 첫 번째 이미지가 수신되면, 프로세서(120)는 503 상태에서와 같이, 첫 번째 이미지에 대응하는 제1 영역(51a)에 이미지를 버퍼링할 수 있다. 프로세서(120)는 제1 영역(51a)의 각 부분 영역들을 지정된 크기의 블록 단위로 구분하고, 제1 블록들(51b)을 인코딩할 수 있다. 이때, 프로세서(120)는 제1 영역(51a) 내에 지정된 크기의 블록들이 배치되도록 처리할 수 있다. 예컨대, 프로세서(120)는 제1 영역(51a)의 경계에 블록들이 중첩되지 않도록 제1 블록들(51b)을 정의할 수 있다. 제1 영역(51a)에 제1 블록들(51b)이 배치되면, 인코더(129)는 각 부분 영역들(30x)별로 인코딩을 수행할 수 있다. 이때, 인코더(129)는 각 부분 영역들(30x)에 배치된 지정된 크기의 블록들의 병렬 인코딩할 수 있다. 예컨대, 인코더(129)는 지정된 개수의 쓰레드(예: 6개의 쓰레드)를 통해 제공되는 부분 영역들(예: 일정 개수의 소부분 영역들이 하나의 부분 영역을 구성함)을 병렬 인코딩할 수 있다.
카메라(180)로부터 두 번째 이미지가 수신되면, 505 상태에서와 같이 두 번째 이미지에 대응하는 제2 영역(52a)이 도시된 바와 같이 위치할 수 있다. 이 경우 프로세서(120)는 제2 영역(52a) 중 제1 영역(51a)과 중첩되는 영역에서는 제1 블록들(51b)을 유지하고, 제1 영역(51a)과 중첩되지 않는 두 번째 이미지 영역 일부에 지정된 크기의 제2 블록들(52b)을 배치하되, 제2 블록들(52b)이 제2 영역(52a)의 경계 영역을 넘지 않도록 블록들을 배치할 수 있다. 이에 따라, 제2 영역(52a)에서, 제1 영역(51a)의 우측 가장자리에 배치된 제1 가장자리 블록들(51c)과 인접되는 제2 블록들(52b)이 제2 영역(52a) 내에 배치될 수 있다.
프로세서(120)는 제1 가장자리 블록들(51c)(예: 제1 블록들(51b) 중 제2 블록들(52b)과 인접된 블록들)을 참조하여, 제2 블록들(52b)에 대한 인코딩을 수행할 수 있다. 제2 블록들(52b)에 대한 인코딩 수행 시, 프로세서(120)는 쓰레드들에 부분 영역들을 할당하여 병렬 인코딩할 수 있다. 상기 두 번째 이미지는 첫 번째 이미지가 촬영된 위치보다 상대적으로 낮게 피사체를 촬영함으로써 첫 번째 이미지와 다른 높이를 가질 수 있다. 지정된 방식의 컨텐츠(예: 파노라마 영상) 생성과 관련하여, 프로세서(120)는 첫 번째 이미지와 두 번째 이미지 중 중첩되는 영역에 대한 스티칭(예: 정합 및 블랜딩 중 적어도 하나의 처리)를 수행할 수 있다. 스티칭 처리 후, 프로세서(120)는 인코딩과 관련한 제2 블록들(52b)을 배치할 수 있다. 프로세서(120)는 이미지 스티칭 과정에서 인코딩할 이미지의 크기가 줄어들면, 줄어든 이미지의 소부분 영역들을 지정된 개수의 쓰레드에 공평하게 재분배하거나, 또는, 상대적으로 데이터 처리 속도가 빠른 쓰레드에 보다 많은 소부분 영역들을 할당할 수 있다. 예컨대, 16*16 블록 단위로 인코딩을 수행하는 한 변이 3840 픽셀인 첫 번째 이미지의 소부분 영역(예: 단위 블록 크기의 영역)이 240이면, 프로세서(120)는 6개의 쓰레드에 40개의 소부분 영역들을 할당하여 병렬 인코딩할 수 있다. 스티칭에 따라, 두 번째 이미지의 소부분 영역이 180으로 줄어들면, 프로세서(120)는 6개의 쓰레드에 30개의 소부분 영역들을 할당하고, 각 쓰레드들에 대하여 병렬 인코딩할 수 있다. 또는, 프로세서(120)는 상대적으로 처리 속도가 빠른 쓰레드에 40개의 소부분 영역들을 할당하고, 상대적으로 처리 속도가 느린 쓰레드에 상대적으로 적은 개수의 소부분 영역들을 할당할 수 있다. 이 동작과 관련하여, 프로세서(120)는 각각의 쓰레드의 처리 속도에 대한 정보를 수집하고, 이를 기반으로 쓰레드에 할당되는 소부분 영역들의 개수를 다르게 할 수 있다.
카메라(180)로부터 세 번째 이미지가 수신되면, 507 상태에서와 같이 세 번째 이미지에 대응하는 제3 영역(53a)이 도시된 바와 같이 위치할 수 있다. 이 경우 프로세서(120)는 제3 영역(53a) 중 제1 영역(51a) 및 제2 영역(52a)과 중첩되는 영역에서 제1 영역(51a) 및 제2 영역(52a)에 있던 블록들을 유지할 수 있다. 상기 프로세서(120)는 제1 영역(51a) 및 제2 영역(52a)과 중첩되지 않는 세 번째 이미지 영역 일부에 지정된 크기의 제3 블록들(53b)을 배치하되, 제3 블록들(53b)이 제3 영역(53a)의 경계 영역을 넘지 않도록 블록들을 배치할 수 있다. 이에 따라, 제2 영역(52a)의 우측 가장자리에 배치된 제2 가장자리 블록들(52c)과 인접되도록 제3 블록들(53b)이 배치될 수 있다. 프로세서(120)는 제2 가장자리 블록들(52c)을 참조하여, 제3 블록들(53b)에 대한 병렬 인코딩을 수행할 수 있다. 상기 프로세서(120)는 제3 블록들(53b) 배치 전에 이전 이미지와 세 번째 이미지에 대한 스티칭 처리를 수행할 수 있다.
카메라(180)로부터 네 번째 이미지가 수신되면, 509 상태에서와 같이 네 번째 이미지에 대응하는 제4 영역(54a)이 도시된 바와 같이 위치할 수 있다. 프로세서(120)는 이전 이미지와 네 번째 이미지의 스티칭 처리를 수행하고, 앞서 설명한 방식에서와 같이 제3 영역(53a)의 우측 가장자리에 배치된 제3 가장자리 블록들(53c)과 인접되는 제4 블록들(54b)을 컨텐츠 생성 버퍼(30)에 배치할 수 있다. 프로세서(120)는 제3 가장자리 블록들(53c)을 참조하여, 제4 블록들(54b)에 대한 병렬 인코딩을 수행할 수 있다.
이미지 수집이 종료되면, 프로세서(120)는 인코딩된 블록들에 대한 통합 처리를 수행할 수 있다. 이 동작에서, 프로세서(120)는 511 상태에서와 같이, 인코딩된 제1 블록들(51b), 제2 블록들(52b), 제3 블록들(53b), 제4 블록들(54b)을 모두 통합한 컨텐츠 데이터 영역(510)과, 컨텐츠 데이터 영역(510)과 관련한 전체 블록의 헤더 정보(510_H), 복호 방식과 관련한 지정된 식별자들(510x) 및 종료 식별자(510_NE)를 포함하는 식별자 영역(520)을 포함하는 컨텐츠를 생성할 수 있다. 상기 지정된 식별자들(510x)은 첫 번째 부분 영역(30_1)의 마지막 블록에 인접되게 배치되는 제1 지정된 식별자(510_1), 두 번째 부분 영역(30_2)의 마지막 블록에 인접되게 배치되는 제2 지정된 식별자(510_2), ,,,, N- 1 번째 부분 영역의 마지막 블록에 인접되게 배치되는 제N-1 지정된 식별자(510_N-1)를 포함할 수 있다. 마지막 N번째 부분 영역(30_N)의 마지막 블록에는 컨텐츠의 마지막임을 지시하는 종료 식별자(510_NE)가 배치될 수 있다.
상술한 설명에서는 카메라(180)가 전달하는 이미지들을 순차적으로 처리하는 것으로 설명하지만 본 발명이 이에 한정되는 것은 아니다. 예컨대, 카메라(180)가 전달하는 이미지들 중 유사 영역이 일정 범위 이상인 이미지들은 이미지 스티칭에 이용되지 않고 무시될 수 있다. 또는 프로세서(120)는 카메라(180)가 전달하는 이미지들 중 유사 영역이 일정 범위 이내인 이미지(예: 이전 이미지와 유사 영역의 크기가 30%~60%인 이미지)를 선택할 수 있다.
상술한 다양한 실시 예에 따르면, 한 실시 예에 따른 이미지 처리 방법은 전자 장치의 프로세서에 의해, 지정된 컨텐츠 생성과 관련하여 할당된 컨텐츠 생성 버퍼를 복수개의 부분 영역들로 구분하는 동작, 수신되는 현재 이미지와 이전 이미지의 중첩되는 영역을 기준으로 상기 이전 이미지와 상기 현재 이미지를 스티칭하는 동작, 상기 스티칭된 이미지들이 상기 컨텐츠 생성 버퍼에 저장되면 상기 스티칭된 이미지의 부분 영역들 각각에 대하여 지정된 블록 크기로 병렬 인코딩하는 동작을 포함할 수 있다.다양한 실시 예에 따르면, 상기 방법은 수신되는 프리뷰 이미지들을 움직임 변화를 기반으로 상기 컨텐츠 생성과 관련한 이미지 획득 방향을 결정하는 동작, 적어도 하나의 센서를 이용하여 상기 컨텐츠 생성과 관련한 이미지 획득 방향을 결정하는 동작 중 적어도 하나를 더 포함할 수 있다.
다양한 실시 예에 따르면, 상기 방법은 상기 촬영 방향에 따라 크기가 다른 컨텐츠 생성 버퍼를 할당하는 동작을 더 포함할 수 있다.
다양한 실시 예에 따르면, 상기 할당하는 동작은 제1 촬영 방향에 대응하여 제1 방향으로 제1 길이를 가지며 제2 방향으로 제2 길이를 가지는 컨텐츠 생성 버퍼 할당하는 동작, 제2 촬영 방향에 대응하여 제1 방향으로 상기 제1 길이보다 작은 제3 길이를 가지며 제2 방향으로 제2 길이를 가지는 컨텐츠 생성 버퍼 할당하는 동작을 포함할 수 있다.
다양한 실시 예에 따르면, 상기 방법은 획득되는 이미지를 디스플레이의 배경 영역에 출력하면서 상기 스티칭된 이미지를 상기 배경 영역에 오버레이하여 출력하는 동작을 더 포함할 수 있다.
다양한 실시 예에 따르면, 상기 방법은 상기 컨텐츠 생성 버퍼 전체 크기에 대응하는 비율의 미리 보기 영역을 상기 이미지 수집 중에 또는 이미지 수집 완료 후에 디스플레이에 출력하는 동작을 더 포함할 수 있다.
다양한 실시 예에 따르면, 상기 출력하는 동작은 상기 스티칭 이미지에 대응하는 스티칭 영역 및 상기 컨텐츠 생성 버퍼 전체 크기에 대응하는 잔여 영역을 포함하는 상기 미리 보기 영역을 출력하는 동작을 포함할 수 있다.
다양한 실시 예에 따르면, 상기 방법은 스티칭할 이미지 수집이 종료되면, 상기 각 부분 영역들의 마지막 블록에 부분 영역의 마지막 블록이 다른 부분 영역의 처음 블록 처리에 이용되지 않도록 지시하는 지정된 식별자를 배치하도록 설정하되, 컨텐츠의 마지막 부분 영역의 마지막 블록을 지시하는 종료 식별자를 컨텐츠의 마지막 부분 영역의 마지막 블록의 인접 영역에 배치하는 동작, 전체 컨텐츠 영역에 대응하는 헤더 정보를 첫 번째 부분 영역의 전단에 배치하는 동작을 더 포함할 수 있다.
다양한 실시 예에 따르면, 상기 스티칭하는 동작은 수신되는 복수개의 이미지들 중 이전 이미지와의 유사 영역이 일정 범위 이내인 이미지를 선택하여 스티칭 처리하는 동작을 포함할 수 있다.
다양한 실시 예에 따르면, 상기 방법은 스티칭 시 이전 이미지와 높이가 다른 현재 이미지 영역을 상기 컨텐츠 생성 버퍼의 버퍼링에서 제외하는 동작을 더 포함할 수 있다.
도 6은 본 발명의 실시 예에 따른 전자 장치의 이미지 획득과 관련한 인터페이스를 설명하는 도면이다. 이하 설명에서, 지정된 컨텐츠는 파노라마 컨텐츠를 기준으로 설명하기로 한다.
도 6을 참조하면, 전자 장치(100)는 사용자 입력에 대응하여 또는 스케줄링된 설정에 대응하여 카메라(180)를 활성화할 수 있다. 카메라(180)가 활성화되면, 전자 장치(100)의 디스플레이(160)는 파노라마 영상 생성과 관련하여 촬영 방향 결정에 이용되는 카메라(180)의 프리뷰 화면을 601 화면에서와 같이 출력할 수 있다. 다양한 실시 예에 따르면, 디스플레이(160)는 카메라(180) 활성화에 따른 프리뷰 화면에 파노라마 영상 생성과 관련한 메뉴 아이템을 출력하고, 메뉴 아이템 선택에 대응하여 도시된 바와 같이 촬영 방향 결정과 관련한 프리뷰 화면을 출력할 수 있다. 601 화면에서와 같이, 디스플레이(160)는 해당 파노라마 영상과 관련하여, 배경 영역(610) 또는 진행 지시자(670)를 포함하는 화면을 출력할 수 있다.
601 화면 상태에서, 전자 장치(100)의 움직임이 한 방향(예: 우측 방향)으로 이동한 경우 촬영 방향이 우측으로 결정될 수 있다. 이에 대응하여, 디스플레이(160)는 603 화면에서와 같이, 촬영 방향 결정을 지시하는 방향 지시 객체(630)를 출력할 수 있다. 전자 장치(100)의 움직임이 다른 방향(예: 좌측 방향, 상측 방향, 하측 방향)으로 이동한 경우, 촬영 방향 결정을 지시하는 방향 지시 객체(630)는 다른 방향(예: 좌측 방향, 상측 방향, 하측 방향)을 지시하는 형태로 표시될 수 있다. 전자 장치(100)는 촬영 방향 결정과 관련하여 적어도 하나의 센서를 이용하여 획득되는 프리뷰 영상의 변화를 이용할 수 있다.
촬영 방향이 결정되고, 전자 장치(100)가 결정된 방향으로 이동하면, 카메라(180)가 획득한 이미지 중 적어도 일부는 지정된 파노라마 영상 생성에 이용될 수 있다. 이 동작에서, 전자 장치(100)는 605 화면에서와 같이 부분적으로 스티칭된 영상을 미리 보기 영역(650)에 출력할 수 있다. 미리 보기 영역(650)은 예컨대, 파노라마 영상의 전체 크기 비율과 동일한 비율을 가질 수 있다. 미리 보기 영역(650)은 획득된 이미지들로 스티칭된 스티칭 영역(651)과, 획득될 이미지들로 채워질 잔여 영역(653)을 포함할 수 있다. 다양한 실시 예에 따르면, 상기 디스플레이(160)는 파노라마 영상 촬영 중임을 지시하는 진행 지시자(670)를 출력할 수 있다. 파노라마 영상 촬영이 종료되면 진행 지시자(670)는 디스플레이(160)에서 제거될 수 있다. 전자 장치(100)는 미리 보기 영역(650)의 크기에 대응하는 전체 이미지들이 획득되면 파노라마 영상 촬영을 종료하거나, 또는 지정된 종료 입력(예: 지정된 시간 경과 또는 종료를 지시하는 가상 버튼 선택)에 대응하여 파노라마 영상 촬영을 종료할 수 있다. 획득된 이미지들의 스티칭 크기가 미리 보기 영역(650)보다 작은 경우, 전자 장치(100)는 스티칭된 이미지를 확장시켜 미리 보기 영역(650) 전체 크기에 맞도록 변경할 수 있다. 또는, 전자 장치(100)는 작은 크기의 스티칭 이미지를 파노라마 영상으로 생성할 수도 있다. 이 경우, 미리 보기 영역(650) 전체 길이에 비해 상대적으로 작은 길이의 파노라마 영상이 생성될 수 있다.
다양한 실시 예에 따르면, 상기 전자 장치(100)는 획득된 이미지들을 스티칭하는 시점마다 인코딩을 수행함으로써, 파노라마 영상 촬영이 종료된 직 후, 인코딩된 데이터를 통합하여 파노라마 영상의 저장을 신속하게 처리할 수 있다. 전자 장치(100)의 출력 처리 모듈(127)은 입력 버퍼 관리 모듈(123)이 수신하는 복수의 영상을 디스플레이(160)에 출력할 수 있다. 또한, 전자 장치(100)의 출력 처리 모듈(127)은 컨텐츠 생성 모듈(125)이 제공한 파노라마 생성 중인 데이터를 디스플레이(160)에 미리 보기 영역(650)으로 출력할 수 있다. 스티칭 영역(651)에 표시되는 이미지는 인코더(129)에 의해 인코딩된 블록들을 스케일링한 이미지(예: 썸네일 이미지)일 수 있다.
도 7은 본 발명의 실시 예에 따른 전자 장치의 이미지 재생과 관련한 인터페이스를 설명하는 도면이다.
도 7을 참조하면, 전자 장치(100)의 디스플레이(160)는 도시된 바와 같이 파노라마 영상 재생과 관련한 사용자 인터페이스를 출력할 수 있다. 이와 관련하여, 전자 장치(100)는 적어도 하나의 파노라마 영상과 관련한 아이콘 또는 파일 이미지를 출력할 수 있다. 예컨대, 전자 장치(100)는 갤러리 기능 선택 시 또는 이미지 재생 기능 선택 시, 복수의 파일 아이콘을 디스플레이(160)에 출력할 수 있다. 이때, 파노라마 영상에 대응하는 파일 아이콘과 정지 영상에 대응하는 파일 아이콘의 형태는 서로 다를 수 있다. 파노라마 영상과 관련한 파일 아이콘이 선택되면, 701 화면에서와 같이, 디스플레이(160)는 해당 파노라마 영상과 관련하여, 배경 영역(710)과 미리 보기 영역(720) 및 가상 재생 버튼(730)을 포함하는 화면을 출력할 수 있다.
상기 가상 재생 버튼(730)이 선택되면, 전자 장치(100)는 703 화면에서와 같이 파노라마 영상을 디스플레이(160)에 출력하면서, 아직 표시되지 않은 파노라마 영상이 디스플레이(160)에 표시되도록 파노라마 영상을 디스플레이(160) 상에서 자동으로 이동시킬 수 있다. 예컨대, 영상 중 현재 디스플레이(160)에 출력 중인 제1 화면(731)은 우측에서 좌측으로 이동되면서 제2 화면(733)이 디스플레이(160)에 출력될 수 있다. 전자 장치(100)는 우측에서 좌측으로 이동하는 파노라마 영상을 출력한 후, 파노라마 영상의 우측 마지막 영역이 디스플레이(160)에 출력되면, 자동으로 좌측에서 우측으로 이동하는 파노라마 영상을 출력할 수 있다.
상술한 다양한 실시 예에 따르면, 한 실시 예에 따른 전자 장치는 복수개의 이미지와, 상기 복수개의 이미지로 생성되는 파노라마 영상을 저장하는 메모리, 상기 메모리에 전기적으로 연결되는 프로세서를 포함하고, 상기 프로세서는 상기 파노라마 영상 생성 동작에서 특정 이미지를 상기 메모리에 저장하고, 상기 특정 이미지와 스티칭할 이미지를 선택하여 스티칭 이미지를 생성한 후, 상기 스티칭 이미지를 복수개의 부분 영역으로 구분하고, 각 부분 영역들을 지정된 크기의 블록들 단위로 병렬 인코딩하도록 설정될 수 있다.
상기 프로세서는 이전 이미지와 선택된 이미지의 스티칭 시마다 상기 스티칭 이미지의 새로 추가된 부분 영역들을 지정된 크기의 블록들 단위로 병렬 인코딩하도록 설정될 수 있다.
상술한 다양한 실시 예에 따르면, 한 실시 예에 따른 전자 장치는 파노라마 영상 생성과 관련한 복수개의 이미지를 촬영하여 순차적으로 제공하는 카메라, 상기 카메라가 제공하는 복수개의 이미지들을 저장하는 메모리, 상기 카메라 및 상기 메모리와 전기적으로 연결되는 프로세서를 포함하고, 상기 프로세서는 상기 파노라마 영상에 대응하는 컨텐츠 생성 버퍼를 할당하되, 상기 컨텐츠 생성 버퍼를 일정 크기의 부분 영역들로 구분한 후, 이미지를 수신할 때마다 이전 이미지와 스티칭하고, 스티칭된 부분을 상기 컨텐츠 생성 버퍼에 버퍼링한 후 각 부분 영역들에 배치된 부분을 지정된 크기의 블록 단위로 병렬 인코딩하도록 설정될 수 있다.
상기 프로세서는 수신된 이미지가 상기 파노라마 영상의 최초 이미지인 경우, 상기 수신된 이미지를 상기 컨텐츠 생성 버퍼에 버퍼링한 후 각 부분 영역들에 배치된 부분을 지정된 크기의 블록 단위로 병렬 인코딩하도록 설정될 수 있다.
상기 프로세서는 이전 이미지와 연속되는 현재 이미지 부분만을 스티칭하고, 스티칭된 이미지를 상기 컨텐츠 생성 버퍼에 버퍼링한 후 각 부분 영역들에 배치된 부분을 지정된 크기의 블록 단위로 병렬 인코딩하도록 설정될 수 있다.
상술한 다양한 실시 예에 따르면, 한 실시 예에 따른 전자 장치는 파노라마 영상 생성과 관련한 이미지를 촬영하여 제공하는 카메라, 상기 카메라가 제공하는 이미지를 저장하는 메모리, 상기 카메라 및 상기 메모리와 전기적으로 연결되는 프로세서를 포함하고, 상기 프로세서는 파노라마 영상 촬영과 관련한 방향이 결정되면, 해당 방향에 대응하는 컨텐츠 생성 버퍼를 할당하되, 상기 컨텐츠 생성 버퍼를 일정 크기의 부분 영역들로 구분하고, 수신되는 이미지들을 스티칭하여 상기 컨텐츠 생성 버퍼에 저장하는 동안 최초 이미지 및 스티칭 이미지가 상기 컨텐츠 생성 버퍼에 저장될 때마다 지정된 크기의 블록 단위로 상기 부분 영역들에 저장된 이미지를 병렬 인코딩하도록 설정될 수 있다.
도 8는 다양한 실시 예에 따른 전자 장치의 블록도를 나타낸다.
도 8를 참조하면, 전자 장치(801)는, 예를 들면, 도 1에 도시된 전자 장치(100)의 전체 또는 일부를 포함할 수 있다. 전자 장치(801)는 하나 이상의 프로세서(예: AP)(810), 통신 모듈(820), 가입자 식별 모듈(829), 메모리(830), 센서 모듈(840), 입력 장치(850), 디스플레이(860), 인터페이스(870), 오디오 모듈(880), 카메라 모듈(891), 전력 관리 모듈(895), 배터리(896), 인디케이터(897), 및 모터(898)를 포함할 수 있다. 또는, 선택적으로 전자 장치(801)는 보안 모듈(836)을 포함할 수 있다.
프로세서(810)는, 예를 들면, 운영 체제 또는 응용 프로그램을 구동하여 프로세서(810)에 연결된 다수의 하드웨어 또는 소프트웨어 구성요소들을 제어할 수 있고, 각종 데이터 처리 및 연산을 수행할 수 있다. 프로세서(810)는, 예를 들면, SoC(system on chip)로 구현될 수 있다. 한 실시 예에 따르면, 프로세서(810)는 GPU(graphic processing unit) 및/또는 이미지 신호 프로세서(image signal processor)를 더 포함할 수 있다. 프로세서(810)는 도 8에 도시된 구성요소들 중 적어도 일부(예: 셀룰러 모듈(821))를 포함할 수도 있다. 프로세서(810)는 다른 구성요소들(예: 비휘발성 메모리) 중 적어도 하나로부터 수신된 명령 또는 데이터를 휘발성 메모리에 로드(load)하여 처리하고, 다양한 데이터를 비휘발성 메모리에 저장(store)할 수 있다.
통신 모듈(820)은, 도 1의 통신 인터페이스(170)와 동일 또는 유사한 구성을 가질 수 있다. 통신 모듈(820)은, 예를 들면, 셀룰러 모듈(821), Wi-Fi 모듈(822), 블루투스 모듈(823), GNSS 모듈(824) (예: GPS 모듈, Glonass 모듈, Beidou 모듈, 또는 Galileo 모듈), NFC 모듈(825), MST 모듈(826) 및 RF(radio frequency) 모듈(827)을 포함할 수 있다. GNSS는, 예를 들면, GPS(Global Positioning System), Glonass(Global Navigation Satellite System), Beidou Navigation Satellite System(이하 “Beidou”) 또는 Galileo, the European global satellite-based navigation system일 수 있다. 이하, 본 문서에서는, “GPS”는 “GNSS”와 상호 호환적으로 사용될 수 있다.
셀룰러 모듈(821)은, 예를 들면, 통신망을 통해서 음성 통화, 영상 통화, 문자 서비스, 또는 인터넷 서비스 등을 제공할 수 있다. 한 실시 예에 따르면, 셀룰러 모듈(821)은 가입자 식별 모듈(예: SIM 카드)(829)을 이용하여 통신 네트워크 내에서 전자 장치(801)의 구별 및 인증을 수행할 수 있다. 한 실시 예에 따르면, 셀룰러 모듈(821)은 프로세서(810)가 제공할 수 있는 기능 중 적어도 일부 기능을 수행할 수 있다. 한 실시 예에 따르면, 셀룰러 모듈(821)은 커뮤니케이션 프로세서(CP)를 포함할 수 있다.
Wi-Fi 모듈(822), 블루투스 모듈(823), GNSS 모듈(824), NFC 모듈(825), 또는 MST 모듈(826) 각각은, 예를 들면, 해당하는 모듈을 통해서 송수신되는 데이터를 처리하기 위한 프로세서를 포함할 수 있다. 어떤 실시 예에 따르면, 셀룰러 모듈(821), Wi-Fi 모듈(822), 블루투스 모듈(823), GNSS 모듈(824), NFC 모듈(825), MST 모듈(826) 중 적어도 일부(예: 두 개 이상)는 하나의 IC(integrated chip) 또는 IC 패키지 내에 포함될 수 있다.
RF 모듈(827)은, 예를 들면, 통신 신호(예: RF 신호)를 송수신할 수 있다. RF 모듈(827)은, 예를 들면, 트랜시버(transceiver), PAM(power amp module), 주파수 필터(frequency filter), LNA(low noise amplifier), 또는 안테나 등을 포함할 수 있다. 다른 실시 예에 따르면, 셀룰러 모듈(821), Wi-Fi 모듈(822), 블루투스 모듈(823), GNSS 모듈(824), NFC 모듈(825), MST 모듈(826) 중 적어도 하나는 별개의 RF 모듈을 통하여 RF 신호를 송수신할 수 있다.
가입자 식별 모듈(829)은, 예를 들면, 가입자 식별 모듈을 포함하는 카드 및/또는 내장 SIM(embedded SIM)을 포함할 수 있으며, 고유한 식별 정보(예: ICCID (integrated circuit card identifier)) 또는 가입자 정보(예: IMSI (international mobile subscriber identity))를 포함할 수 있다.
메모리(830) (예: 메모리(130))는, 예를 들면, 내장 메모리(832) 또는 외장 메모리(834)를 포함할 수 있다. 내장 메모리(832)는, 예를 들면, 휘발성 메모리(예: DRAM(dynamic RAM), SRAM(static RAM), 또는 SDRAM(synchronous dynamic RAM) 등), 비-휘발성(non-volatile) 메모리 (예: OTPROM(one time programmable ROM), PROM(programmable ROM), EPROM(erasable and programmable ROM), EEPROM(electrically erasable and programmable ROM), 마스크(mask) ROM, 플래시(flash) ROM, 플래시 메모리(예: 낸드플래시(NAND flash) 또는 노아플래시(NOR flash) 등), 하드 드라이브, 또는 SSD(solid state drive) 중 적어도 하나를 포함할 수 있다.
외장 메모리(834)는 플래시 드라이브(flash drive), 예를 들면, CF(compact flash), SD(secure digital), Micro-SD, Mini-SD, xD(extreme digital), MMC(MultiMediaCard), 또는 메모리 스틱(memory stick) 등을 더 포함할 수 있다. 외장 메모리(834)는 다양한 인터페이스를 통하여 전자 장치(801)와 기능적으로 및/또는 물리적으로 연결될 수 있다.
보안 모듈(836)은 메모리(830)보다 상대적으로 보안 레벨이 높은 저장 공간을 포함하는 모듈로서, 안전한 데이터 저장 및 보호된 실행 환경을 보장해주는 회로일 수 있다. 보안 모듈(836)은 별도의 회로로 구현될 수 있으며, 별도의 프로세서를 포함할 수 있다. 보안 모듈(836)은, 예를 들면, 탈착 가능한 스마트 칩, SD(secure digital) 카드 내에 존재하거나, 또는 전자 장치(801)의 고정 칩 내에 내장된 내장형 보안 요소(embedded secure element(eSE))를 포함할 수 있다. 또한, 보안 모듈 (836)은 전자 장치(801)의 운영 체제(OS)와 다른 운영 체제로 구동될 수 있다. 예를 들면, 보안 모듈(836)은 JCOP(java card open platform) 운영 체제를 기반으로 동작할 수 있다.
센서 모듈(840)은, 예를 들면, 물리량을 계측하거나 전자 장치(801)의 작동 상태를 감지하여, 계측 또는 감지된 정보를 전기 신호로 변환할 수 있다. 센서 모듈(840)은, 예를 들면, 제스처 센서(840A), 자이로 센서(840B), 기압 센서(840C), 마그네틱 센서(840D), 가속도 센서(840E), 그립 센서(840F), 근접 센서(840G), 컬러 센서(840H)(예: RGB 센서), 생체 센서(840I), 온/습도 센서(840J), 조도 센서(840K), 또는 UV(ultra violet) 센서(840M) 중의 적어도 하나를 포함할 수 있다. 추가적으로 또는 대체적으로, 센서 모듈(840)은, 예를 들면, 후각 센서(E-nose sensor), EMG(electromyography) 센서, EEG(electroencephalogram) 센서, ECG(electrocardiogram) 센서, IR(infrared) 센서, 홍채 센서 및/또는 지문 센서를 포함할 수 있다. 센서 모듈(840)은 그 안에 속한 적어도 하나 이상의 센서들을 제어하기 위한 제어 회로를 더 포함할 수 있다. 어떤 실시 예에서는, 전자 장치(801)는 프로세서(810)의 일부로서 또는 별도로, 센서 모듈(840)을 제어하도록 구성된 프로세서를 더 포함하여, 프로세서(810)가 슬립(sleep) 상태에 있는 동안, 센서 모듈(840)을 제어할 수 있다.
입력 장치(850)는, 예를 들면, 터치 패널(touch panel)(852), (디지털) 펜 센서(pen sensor)(854), 키(key)(856), 또는 초음파(ultrasonic) 입력 장치(858)를 포함할 수 있다. 터치 패널(852)은, 예를 들면, 정전식, 감압식, 적외선 방식, 또는 초음파 방식 중 적어도 하나의 방식을 사용할 수 있다. 또한, 터치 패널(852)은 제어 회로를 더 포함할 수도 있다. 터치 패널(852)은 택타일 레이어(tactile layer)를 더 포함하여, 사용자에게 촉각 반응을 제공할 수 있다.
(디지털) 펜 센서(854)는, 예를 들면, 터치 패널의 일부이거나, 별도의 인식용 시트(sheet)를 포함할 수 있다. 키(856)는, 예를 들면, 물리적인 버튼, 광학식 키, 또는 키패드를 포함할 수 있다. 초음파 입력 장치(858)는 마이크(예: 마이크(888))를 통해, 입력 도구에서 발생된 초음파를 감지하여, 상기 감지된 초음파에 대응하는 데이터를 확인할 수 있다.
디스플레이(860)(예: 상기 디스플레이(160))는 패널(862), 홀로그램 장치(864), 또는 프로젝터(866)를 포함할 수 있다. 패널(862)은, 도 1의 디스플레이(160)와 동일 또는 유사한 구성을 포함할 수 있다. 패널(862)은, 예를 들면, 유연하게(flexible), 투명하게(transparent), 또는 착용할 수 있게(wearable) 구현될 수 있다. 패널(862)은 터치 패널(852)과 하나의 모듈로 구성될 수도 있다. 한 실시예에 따르면, 패널(862)은 사용자의 터치에 대한 압력의 세기를 측정할 수 있는 압력 센서(또는 포스 센서)를 포함할 수 있다. 상기 압력 센서는 터치 패널(852)과 일체형으로 구현되거나, 또는 터치 패널(852)과는 별도의 하나 이상의 센서로 구현될 수 있다. 홀로그램 장치(864)는 빛의 간섭을 이용하여 입체 영상을 허공에 보여줄 수 있다. 프로젝터(866)는 스크린에 빛을 투사하여 영상을 표시할 수 있다. 스크린은, 예를 들면, 전자 장치(801)의 내부 또는 외부에 위치할 수 있다. 한 실시 예에 따르면, 디스플레이(860)는 상기 패널(862), 상기 홀로그램 장치(864), 또는 프로젝터(866)를 제어하기 위한 제어 회로를 더 포함할 수 있다.
인터페이스(870)는, 예를 들면, HDMI(872), USB(874), 광 인터페이스(optical interface)(876), 또는 D-sub(D-subminiature)(878)를 포함할 수 있다. 인터페이스(870)는, 예를 들면, 도 1에 도시된 통신 인터페이스에 포함될 수 있다. 추가적으로 또는 대체적으로, 인터페이스(870)는, 예를 들면, MHL(mobile high-definition link) 인터페이스, SD 카드/MMC 인터페이스, 또는 IrDA(infrared data association) 규격 인터페이스를 포함할 수 있다.
오디오 모듈(880)은, 예를 들면, 소리(sound)와 전기 신호를 쌍방향으로 변환시킬 수 있다. 오디오 모듈(880)의 적어도 일부 구성요소는, 예를 들면, 도 1에 도시된 입출력 모듈(150)에 포함될 수 있다. 오디오 모듈(880)은, 예를 들면, 스피커(882), 리시버(884), 이어폰(886), 또는 마이크(888) 등을 통해 입력 또는 출력되는 소리 정보를 처리할 수 있다.
카메라 모듈(891)은, 예를 들면, 정지 영상 및 동영상을 촬영할 수 있는 장치로서, 한 실시 예에 따르면, 하나 이상의 이미지 센서(예: 전면 센서 또는 후면 센서), 렌즈, ISP(image signal processor), 또는 플래시(flash)(예: LED 또는 제논 램프(xenon lamp))를 포함할 수 있다.
전력 관리 모듈(895)은, 예를 들면, 전자 장치(801)의 전력을 관리할 수 있다. 한 실시 예에 따르면, 전력 관리 모듈(895)은 PMIC(power management integrated circuit), 충전 IC(charger integrated circuit), 또는 배터리 또는 연료 게이지(battery or fuel gauge)를 포함할 수 있다. PMIC는, 유선 및/또는 무선 충전 방식을 가질 수 있다. 무선 충전 방식은, 예를 들면, 자기공명 방식, 자기유도 방식 또는 전자기파 방식 등을 포함하며, 무선 충전을 위한 부가적인 회로, 예를 들면, 코일 루프, 공진 회로, 또는 정류기 등을 더 포함할 수 있다. 배터리 게이지는, 예를 들면, 배터리(896)의 잔량, 충전 중 전압, 전류, 또는 온도를 측정할 수 있다. 배터리(896)는, 예를 들면, 충전식 전지(rechargeable battery) 및/또는 태양 전지(solar battery)를 포함할 수 있다.
인디케이터(897)는 전자 장치(801) 혹은 그 일부(예: 프로세서(810))의 특정 상태, 예를 들면, 부팅 상태, 메시지 상태 또는 충전 상태 등을 표시할 수 있다. 모터(898)는 전기적 신호를 기계적 진동으로 변환할 수 있고, 진동(vibration), 또는 햅틱(haptic) 효과 등을 발생시킬 수 있다. 도시되지는 않았으나, 전자 장치(801)은 모바일 TV 지원을 위한 처리 장치(예: GPU)를 포함할 수 있다. 모바일 TV 지원을 위한 처리 장치는, 예를 들면, DMB(Digital Multimedia Broadcasting), DVB(Digital Video Broadcasting), 또는 미디어플로(MediaFLOTM) 등의 규격에 따른 미디어 데이터를 처리할 수 있다.
본 문서에서 기술된 구성요소들 각각은 하나 또는 그 이상의 부품(component)으로 구성될 수 있으며, 해당 구성 요소의 명칭은 전자 장치의 종류에 따라서 달라질 수 있다. 다양한 실시 예에서, 전자 장치는 본 문서에서 기술된 구성요소 중 적어도 하나를 포함하여 구성될 수 있으며, 일부 구성요소가 생략되거나 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 또한, 다양한 실시 예에 따른 전자 장치의 구성 요소들 중 일부가 결합되어 하나의 개체(entity)로 구성됨으로써, 결합되기 이전의 해당 구성 요소들의 기능을 동일하게 수행할 수 있다.
도 9은 다양한 실시 예에 따른 프로그램 모듈의 블록도를 나타낸다.
한 실시 예에 따르면, 프로그램 모듈(910)(예: 프로그램(140))은 전자 장치(예: 전자 장치(100))에 관련된 자원을 제어하는 운영 체제(OS) 및/또는 운영 체제 상에서 구동되는 다양한 어플리케이션(예: 어플리케이션 프로그램(147))을 포함할 수 있다. 운영 체제는, 예를 들면, AndroidTM, iOSTM, WindowsTM, SymbianTM, TizenTM, 또는 BadaTM를 포함할 수 있다..
프로그램 모듈(910)은 커널(920), 미들웨어(930), API(960), 및/또는 어플리케이션(970)을 포함할 수 있다. 프로그램 모듈(910)의 적어도 일부는 전자 장치 상에 프리로드(preload) 되거나, 외부 전자 장치(예: 외부 전자 장치(101, 102), 서버(106) 등)로부터 다운로드 가능하다.
커널(920)(예: 커널(141))은, 예를 들면, 시스템 리소스 매니저(921) 또는 디바이스 드라이버(923)를 포함할 수 있다. 시스템 리소스 매니저(921)는 시스템 리소스의 제어, 할당, 또는 회수 등을 수행할 수 있다. 한 실시 예에 따르면, 시스템 리소스 매니저(921)는 프로세스 관리부, 메모리 관리부, 또는 파일 시스템 관리부 등을 포함할 수 있다. 디바이스 드라이버(923)는, 예를 들면, 디스플레이 드라이버, 카메라 드라이버, 블루투스 드라이버, 공유 메모리 드라이버, USB 드라이버, 키패드 드라이버, Wi-Fi 드라이버, 오디오 드라이버, 또는 IPC(inter-process communication) 드라이버를 포함할 수 있다.
미들웨어(930)는, 예를 들면, 어플리케이션(970)이 공통적으로 필요로 하는 기능을 제공하거나, 어플리케이션(970)이 전자 장치 내부의 제한된 시스템 자원을 효율적으로 사용할 수 있도록 API(960)를 통해 다양한 기능들을 어플리케이션(970)으로 제공할 수 있다. 한 실시 예에 따르면, 미들웨어(930)(예: 미들웨어(143))는 런타임 라이브러리(935), 어플리케이션 매니저(application manager)(941), 윈도우 매니저(window manager)(942), 멀티미디어 매니저(multimedia manager)(943), 리소스 매니저(resource manager)(944), 파워 매니저(power manager)(945), 데이터베이스 매니저(database manager)(946), 패키지 매니저(package manager)(947), 연결 매니저(connectivity manager)(948), 통지 매니저(notification manager)(949), 위치 매니저(location manager)(950), 그래픽 매니저(graphic manager)(951), 보안 매니저(security manager)(952), 또는 결제 매니저(954) 중 적어도 하나를 포함할 수 있다.
런타임 라이브러리(935)는, 예를 들면, 어플리케이션(970)이 실행되는 동안에 프로그래밍 언어를 통해 새로운 기능을 추가하기 위해 컴파일러가 사용하는 라이브러리 모듈을 포함할 수 있다. 런타임 라이브러리(935)는 입출력 관리, 메모리 관리, 또는 산술 함수에 대한 기능 등을 수행할 수 있다.
어플리케이션 매니저(941)는, 예를 들면, 어플리케이션(970) 중 적어도 하나의 어플리케이션의 생명 주기(life cycle)를 관리할 수 있다. 윈도우 매니저(942)는 화면에서 사용하는 GUI 자원을 관리할 수 있다. 멀티미디어 매니저(943)는 다양한 미디어 파일들의 재생에 필요한 포맷을 파악하고, 해당 포맷에 맞는 코덱(codec)을 이용하여 미디어 파일의 인코딩(encoding) 또는 디코딩(decoding)을 수행할 수 있다. 리소스 매니저(944)는 어플리케이션(970) 중 적어도 어느 하나의 어플리케이션의 소스 코드, 메모리 또는 저장 공간 등의 자원을 관리할 수 있다.
파워 매니저(945)는, 예를 들면, 바이오스(BIOS: basic input/output system) 등과 함께 동작하여 배터리 또는 전원을 관리하고, 전자 장치의 동작에 필요한 전력 정보 등을 제공할 수 있다. 데이터베이스 매니저(946)는 어플리케이션(970) 중 적어도 하나의 어플리케이션에서 사용할 데이터베이스를 생성, 검색, 또는 변경할 수 있다. 패키지 매니저(947)는 패키지 파일의 형태로 배포되는 어플리케이션의 설치 또는 업데이트를 관리할 수 있다.
연결 매니저(948)는, 예를 들면, Wi-Fi 또는 블루투스 등의 무선 연결을 관리할 수 있다. 통지 매니저(949)는 도착 메시지, 약속, 근접성 알림 등의 사건(event)을 사용자에게 방해되지 않는 방식으로 표시 또는 통지할 수 있다. 위치 매니저(950)는 전자 장치의 위치 정보를 관리할 수 있다. 그래픽 매니저(951)는 사용자에게 제공될 그래픽 효과 또는 이와 관련된 사용자 인터페이스를 관리할 수 있다. 보안 매니저(952)는 시스템 보안 또는 사용자 인증 등에 필요한 제반 보안 기능을 제공할 수 있다. 한 실시 예에 따르면, 전자 장치(예: 전자 장치(100))가 전화 기능을 포함한 경우, 미들웨어(930)는 전자 장치의 음성 또는 영상 통화 기능을 관리하기 위한 통화 매니저(telephony manager)를 더 포함할 수 있다.
미들웨어(930)는 전술한 구성요소들의 다양한 기능의 조합을 형성하는 미들웨어 모듈을 포함할 수 있다. 미들웨어(930)는 차별화된 기능을 제공하기 위해 운영 체제의 종류 별로 특화된 모듈을 제공할 수 있다. 또한, 미들웨어(930)는 동적으로 기존의 구성요소를 일부 삭제하거나 새로운 구성요소들을 추가할 수 있다.
API(960)(예: API(145))는, 예를 들면, API 프로그래밍 함수들의 집합으로, 운영 체제에 따라 다른 구성으로 제공될 수 있다. 예를 들면, 안드로이드 또는 iOS의 경우, 플랫폼 별로 하나의 API 셋을 제공할 수 있으며, 타이젠(tizen)의 경우, 플랫폼 별로 두 개 이상의 API 셋을 제공할 수 있다.
어플리케이션(970)(예: 어플리케이션 프로그램(147))은, 예를 들면, 홈(971), 다이얼러(972), SMS/MMS(973), IM(instant message)(974), 브라우저(975), 카메라(976), 알람(977), 컨택트(978), 음성 다이얼(979), 이메일(980), 달력(981), 미디어 플레이어(982), 앨범(983), 또는 시계(984), 결제(985), 건강 관리(health care)(예: 운동량 또는 혈당 등을 측정), 또는 환경 정보 제공(예: 기압, 습도, 또는 온도 정보 등을 제공) 등의 기능을 수행할 수 있는 하나 이상의 어플리케이션을 포함할 수 있다.
한 실시 예에 따르면, 어플리케이션(970)은 전자 장치(예: 전자 장치(100)와 외부 전자 장치 사이의 정보 교환을 지원하는 어플리케이션(이하, 설명의 편의상, "정보 교환 어플리케이션")을 포함할 수 있다. 정보 교환 어플리케이션은, 예를 들면, 외부 전자 장치에 특정 정보를 전달하기 위한 알림 전달(notification relay) 어플리케이션, 또는 외부 전자 장치를 관리하기 위한 장치 관리(device management) 어플리케이션을 포함할 수 있다.
예를 들면, 알림 전달 어플리케이션은 전자 장치의 다른 어플리케이션(예: SMS/MMS 어플리케이션, 이메일 어플리케이션, 건강 관리 어플리케이션, 또는 환경 정보 어플리케이션 등)에서 발생된 알림 정보를 외부 전자 장치로 전달하는 기능을 포함할 수 있다. 또한, 알림 전달 어플리케이션은, 예를 들면, 외부 전자 장치로부터 알림 정보를 수신하여 사용자에게 제공할 수 있다.
장치 관리 어플리케이션은, 예를 들면, 전자 장치와 통신하는 외부 전자 장치의 적어도 하나의 기능(예: 외부 전자 장치 자체(또는 일부 구성 부품)의 턴-온/턴-오프 또는 디스플레이의 밝기(또는 해상도) 조절), 외부 전자 장치에서 동작하는 어플리케이션 또는 외부 전자 장치에서 제공되는 서비스(예: 통화 서비스 또는 메시지 서비스 등)를 관리(예: 설치, 삭제, 또는 업데이트)할 수 있다.
한 실시 예에 따르면, 어플리케이션(970)은 전자 장치(예: 전자 장치(100))의 속성에 따라 지정된 어플리케이션(예: 모바일 의료 기기의 건강 관리 어플리케이션)을 포함할 수 있다. 한 실시 예에 따르면, 어플리케이션(970)은 외부 전자 장치로부터 수신된 어플리케이션을 포함할 수 있다. 한 실시 예에 따르면, 어플리케이션(970)은 프리로드 어플리케이션(preloaded application) 또는 서버로부터 다운로드 가능한 제3자 어플리케이션(third party application)을 포함할 수 있다. 도시된 실시 예에 따른 프로그램 모듈(910)의 구성요소들의 명칭은 운영 체제의 종류에 따라서 달라질 수 있다.
다양한 실시 예에 따르면, 프로그램 모듈(910)의 적어도 일부는 소프트웨어, 펌웨어, 하드웨어, 또는 이들 중 적어도 둘 이상의 조합으로 구현될 수 있다. 프로그램 모듈(910)의 적어도 일부는, 예를 들면, 프로세서(예: 프로세서(810))에 의해 구현(implement)(예: 실행)될 수 있다. 프로그램 모듈(910)의 적어도 일부는 하나 이상의 기능을 수행하기 위한, 예를 들면, 모듈, 프로그램, 루틴, 명령어 세트(sets of instructions) 또는 프로세스 등을 포함할 수 있다.
본 문서에서 사용된 용어 "모듈"은, 예를 들면, 하드웨어, 소프트웨어 또는 펌웨어(firmware) 중 하나 또는 둘 이상의 조합을 포함하는 단위(unit)를 의미할 수 있다. "모듈"은, 예를 들면, 유닛(unit), 로직(logic), 논리 블록(logical block), 부품(component), 프로세서, 또는 회로(circuit) 등의 용어와 바꾸어 사용(interchangeably use)될 수 있다. "모듈"은, 일체로 구성된 부품의 최소 단위 또는 그 일부가 될 수 있다. "모듈"은 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수도 있다. "모듈"은 기계적으로 또는 전자적으로 구현될 수 있다. 예를 들면, "모듈"은, 알려졌거나 앞으로 개발될, 어떤 동작들을 수행하는 ASIC(application-specific integrated circuit) 칩, FPGAs(field-programmable gate arrays) 또는 프로그램 가능 논리 장치(programmable-logic device) 중 적어도 하나를 포함할 수 있다.
다양한 실시 예에 따른 장치(예: 모듈들 또는 그 기능들) 또는 방법(예: 동작들)의 적어도 일부는, 예컨대, 프로그램 모듈의 형태로 컴퓨터로 읽을 수 있는 저장매체(computer-readable storage media)에 저장된 명령어로 구현될 수 있다. 상기 명령어가 프로세서(예: 프로세서(120))에 의해 실행될 경우, 상기 하나 이상의 프로세서가 상기 명령어에 해당하는 기능을 수행할 수 있다. 컴퓨터로 읽을 수 있는 저장매체는, 예를 들면, 메모리(130)가 될 수 있다.
컴퓨터로 판독 가능한 기록 매체는, 하드디스크, 플로피디스크, 마그네틱 매체(magnetic media)(예: 자기테이프), 광기록 매체(optical media)(예: CD-ROM, DVD(Digital Versatile Disc), 자기-광 매체(magneto-optical media)(예: 플롭티컬 디스크(floptical disk)), 하드웨어 장치(예: ROM, RAM, 또는 플래시 메모리 등) 등을 포함할 수 있다. 또한, 프로그램 명령에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 상술한 하드웨어 장치는 다양한 실시 예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지다.
한 실시 예에 따른 저장 매체는, 적어도 하나의 명령어를 저장하는 메모리 및 상기 메모리에 저장된 명령어를 실행하는 프로세서를 포함하고, 상기 프로세서에 의해 실행되는 명령어는 전자 장치의 프로세서에 의해, 지정된 컨텐츠 생성과 관련하여 할당된 컨텐츠 생성 버퍼를 복수개의 부분 영역들로 구분하는 동작, 수신되는 현재 이미지와 이전 이미지의 중첩되는 영역을 기준으로 상기 이전 이미지와 상기 현재 이미지를 스티칭하는 동작, 상기 스티칭된 이미지들이 상기 컨텐츠 생성 버퍼에 저장되면 상기 스티칭된 이미지의 부분 영역들 각각에 대하여 지정된 블록 크기로 병렬 인코딩하는 동작을 포함하도록 설정될 수 있다.
다양한 실시 예에 따른 모듈 또는 프로그램 모듈은 전술한 구성요소들 중 적어도 하나 이상을 포함하거나, 일부가 생략되거나, 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 다양한 실시 예에 따른 모듈, 프로그램 모듈 또는 다른 구성요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱(heuristic)한 방법으로 실행될 수 있다. 또한, 일부 동작은 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.
그리고 본 문서에 개시된 실시 예는 개시된, 기술 내용의 설명 및 이해를 위해 제시된 것이며, 본 발명의 범위를 한정하는 것은 아니다. 따라서, 본 문서의 범위는, 본 발명의 기술적 사상에 근거한 모든 변경 또는 다양한 다른 실시 예를 포함하는 것으로 해석되어야 한다.

Claims (20)

  1. 이미지 인코딩과 관련한 적어도 하나의 명령어를 저장하는 메모리;
    상기 메모리와 전기적으로 연결되는 프로세서를 포함하고,
    상기 프로세서 실행 중에 수행되는 상기 명령어는
    지정된 컨텐츠 생성과 관련하여 할당된 컨텐츠 생성 버퍼를 복수개의 부분 영역들로 구분하고, 수신되는 현재 이미지와 이전 이미지의 중첩되는 영역의 적어도 일부를 기준으로 상기 이전 이미지와 상기 현재 이미지를 스티칭하고, 상기 스티칭된 이미지들이 상기 컨텐츠 생성 버퍼에 저장되면 상기 스티칭된 이미지의 부분 영역들 각각에 대하여 지정된 블록 크기로 병렬 인코딩하도록 설정된 전자 장치.
  2. 제1항에 있어서,
    상기 프로세서 실행 중에 수행되는 상기 명령어는
    수신되는 프리뷰 이미지들을 움직임 변화를 기반으로 상기 컨텐츠 생성과 관련한 이미지 획득 방향을 결정하거나, 적어도 하나의 센서를 이용하여 상기 컨텐츠 생성과 관련한 이미지 획득 방향을 결정하도록 설정된 전자 장치.
  3. 제2항에 있어서,
    상기 프로세서 실행 중에 수행되는 상기 명령어는
    상기 촬영 방향에 따라 크기가 다른 컨텐츠 생성 버퍼를 할당하도록 설정된
  4. 제2항에 있어서,
    상기 프로세서 실행 중에 수행되는 상기 명령어는
    제1 촬영 방향에 대응하여 제1 방향으로 제1 길이를 가지고 제2 방향으로 제2 길이를 가지는 컨텐츠 생성 버퍼 할당하거나,
    제2 촬영 방향에 대응하여 제1 방향으로 상기 제1 길이보다 작은 제3 길이를 가지고 제2 방향으로 제2 길이를 가지는 컨텐츠 생성 버퍼 할당하도록 설정된 전자 장치.
  5. 제1항에 있어서,
    상기 프로세서 실행 중에 수행되는 상기 명령어는
    획득되는 이미지를 디스플레이의 배경 영역에 출력하고, 상기 스티칭된 이미지를 상기 배경 영역에 오버레이하여 출력하도록 설정된 전자 장치.
  6. 제1항에 있어서,
    상기 프로세서 실행 중에 수행되는 상기 명령어는
    상기 컨텐츠 생성 버퍼 전체 크기에 대응하는 비율의 미리 보기 영역을 상기 이미지 수집 중에 또는 이미지 수집 완료 후에 디스플레이에 출력하도록 설정된 전자 장치.
  7. 제6항에 있어서,
    상기 프로세서 실행 중에 수행되는 상기 명령어는
    상기 스티칭된 이미지에 대응하는 스티칭 영역 및 상기 컨텐츠 생성 버퍼 전체 크기에 대응하는 잔여 영역을 포함하는 상기 미리 보기 영역을 출력하도록 설정된 전자 장치.
  8. 제1항에 있어서,
    상기 프로세서 실행 중에 수행되는 상기 명령어는
    스티칭할 이미지 수집이 종료되면, 부분 영역의 마지막 블록이 다른 부분 영역의 처음 블록 처리에 이용되지 않도록 지시하는 지정된 식별자를 상기 각 부분 영역들의 마지막 블록에 배치하도록 설정하되, 컨텐츠의 마지막 부분 영역의 마지막 블록을 지시하는 종료 식별자를 컨텐츠의 마지막 부분 영역의 마지막 블록의 인접 영역에 배치하고, 전체 컨텐츠 영역에 대응하는 헤더 정보를 첫 번째 부분 영역의 전단에 배치하도록 설정된 전자 장치.
  9. 제1항에 있어서,
    상기 프로세서 실행 중에 수행되는 상기 명령어는
    수신되는 복수개의 이미지들 중 이전 이미지와의 유사 영역이 일정 범위 이내인 이미지를 선택하여 스티칭 처리하도록 설정된 전자 장치.
  10. 제1항에 있어서,
    상기 프로세서 실행 중에 수행되는 상기 명령어는
    이미지 스티칭 시 이전 이미지와 높이가 다른 현재 이미지 영역을 상기 컨텐츠 생성 버퍼의 버퍼링에서 제외하도록 설정된 전자 장치.
  11. 전자 장치의 프로세서에 의해, 지정된 컨텐츠 생성과 관련하여 할당된 컨텐츠 생성 버퍼를 복수개의 부분 영역들로 구분하는 동작;
    수신되는 현재 이미지와 이전 이미지의 중첩되는 영역을 기준으로 상기 이전 이미지와 상기 현재 이미지를 스티칭하여 상기 컨텐츠 생성 버퍼에 저장하는 동작;
    상기 스티칭된 이미지들이 상기 컨텐츠 생성 버퍼에 저장되면 상기 스티칭된 이미지의 부분 영역들 각각에 대하여 지정된 블록 크기로 병렬 인코딩하는 동작;을 포함하는 이미지 처리 방법.
  12. 제11항에 있어서,
    수신되는 프리뷰 이미지들을 움직임 변화를 기반으로 상기 컨텐츠 생성과 관련한 이미지 획득 방향을 결정하는 동작;
    적어도 하나의 센서를 이용하여 상기 컨텐츠 생성과 관련한 이미지 획득 방향을 결정하는 동작; 중 적어도 하나를 더 포함하는 이미지 처리 방법.
  13. 제12항에 있어서,
    상기 촬영 방향에 따라 크기가 다른 컨텐츠 생성 버퍼를 할당하는 동작;을 더 포함하는 이미지 처리 방법.
  14. 제13항에 있어서,
    상기 할당하는 동작은
    제1 촬영 방향에 대응하여 제1 방향으로 제1 길이를 가지고 제2 방향으로 제2 길이를 가지는 컨텐츠 생성 버퍼 할당하는 동작;
    제2 촬영 방향에 대응하여 제1 방향으로 상기 제1 길이보다 작은 제3 길이를 가지고 제2 방향으로 제2 길이를 가지는 컨텐츠 생성 버퍼 할당하는 동작;을 포함하는 이미지 처리 방법.
  15. 제11항에 있어서,
    획득되는 이미지를 디스플레이의 배경 영역에 출력하면서 상기 스티칭된 이미지를 상기 배경 영역에 오버레이하여 출력하는 동작;을 더 포함하는 이미지 처리 방법.
  16. 제11항에 있어서,
    상기 컨텐츠 생성 버퍼 전체 크기에 대응하는 비율의 미리 보기 영역을 상기 이미지 수집 중에 또는 이미지 수집 완료 후에 디스플레이에 출력하는 동작;을 더 포함하는 이미지 처리 방법.
  17. 제16항에 있어서,
    상기 출력하는 동작은
    상기 스티칭 이미지에 대응하는 스티칭 영역 및 상기 컨텐츠 생성 버퍼 전체 크기에 대응하는 잔여 영역을 포함하는 상기 미리 보기 영역을 출력하는 동작;을 포함하는 이미지 처리 방법.
  18. 제11항에 있어서,
    스티칭할 이미지 수집이 종료되면, 부분 영역의 마지막 블록이 다른 부분 영역의 처음 블록 처리에 이용되지 않도록 지시하는 지정된 식별자를 상기 각 부분 영역들의 마지막 블록에 배치하도록 설정하되, 컨텐츠의 마지막 부분 영역의 마지막 블록을 지시하는 종료 식별자를 컨텐츠의 마지막 부분 영역의 마지막 블록의 인접 영역에 배치하는 동작;
    전체 컨텐츠 영역에 대응하는 헤더 정보를 첫 번째 부분 영역의 전단에 배치하는 동작;을 더 포함하는 이미지 처리 방법.
  19. 제11항에 있어서,
    상기 스티칭하는 동작은
    수신되는 복수개의 이미지들 중 이전 이미지와의 유사 영역이 일정 범위 이내인 이미지를 선택하여 스티칭 처리하는 동작;을 포함하는 이미지 처리 방법.
  20. 제11항에 있어서,
    스티칭 시 이전 이미지와 높이가 다른 현재 이미지 영역을 상기 컨텐츠 생성 버퍼의 버퍼링에서 제외하는 동작;을 더 포함하는 이미지 처리 방법.
PCT/KR2016/015136 2016-02-17 2016-12-22 이미지 처리 방법 및 이를 지원하는 전자 장치 WO2017142182A1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201680079997.1A CN108605100A (zh) 2016-02-17 2016-12-22 用于处理图像的方法和用于支持该方法的电子装置
US16/073,378 US10868959B2 (en) 2016-02-17 2016-12-22 Method for processing image and electronic device for supporting same
EP16890772.3A EP3399742B1 (en) 2016-02-17 2016-12-22 Method for processing image and electronic device for supporting same

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020160018346A KR102460906B1 (ko) 2016-02-17 2016-02-17 이미지 처리 방법 및 이를 지원하는 전자 장치
KR10-2016-0018346 2016-02-17

Publications (1)

Publication Number Publication Date
WO2017142182A1 true WO2017142182A1 (ko) 2017-08-24

Family

ID=59625270

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2016/015136 WO2017142182A1 (ko) 2016-02-17 2016-12-22 이미지 처리 방법 및 이를 지원하는 전자 장치

Country Status (5)

Country Link
US (1) US10868959B2 (ko)
EP (1) EP3399742B1 (ko)
KR (1) KR102460906B1 (ko)
CN (1) CN108605100A (ko)
WO (1) WO2017142182A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108174084A (zh) * 2017-12-13 2018-06-15 深圳进化动力数码科技有限公司 全景视频处理方法及终端设备
US20220084159A1 (en) * 2018-09-21 2022-03-17 Samsung Electronics Co., Ltd. Image signal processor, method of operating the image signal processor, and application processor including the image signal processor

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10462466B2 (en) 2016-06-20 2019-10-29 Gopro, Inc. Systems and methods for spatially selective video coding
JP2019021968A (ja) * 2017-07-11 2019-02-07 キヤノン株式会社 画像符号化装置及びその制御方法
US10764494B2 (en) 2018-05-25 2020-09-01 Microsoft Technology Licensing, Llc Adaptive panoramic video streaming using composite pictures
US10666863B2 (en) * 2018-05-25 2020-05-26 Microsoft Technology Licensing, Llc Adaptive panoramic video streaming using overlapping partitioned sections
EP3606032B1 (en) * 2018-07-30 2020-10-21 Axis AB Method and camera system combining views from plurality of cameras
WO2020072267A1 (en) * 2018-10-05 2020-04-09 Google Llc Scale-down capture preview for a panorama capture user interface
CN109767387A (zh) * 2018-12-26 2019-05-17 北京木业邦科技有限公司 一种基于无人机的森林图像获取方法及装置
EP3881280B1 (en) * 2018-12-29 2023-09-13 Zhejiang Dahua Technology Co., Ltd. Methods and systems for image processing
CN112464724B (zh) * 2020-10-30 2023-10-24 中科院成都信息技术股份有限公司 选票识别方法及系统
CN112445255A (zh) * 2020-11-16 2021-03-05 珠海格力电器股份有限公司 一种设备的控制方法以及装置
US20220351331A1 (en) * 2021-04-30 2022-11-03 International Business Machines Corporation Object stitching image generation
TWI767714B (zh) * 2021-05-19 2022-06-11 華碩電腦股份有限公司 電子裝置以及其影像擷取器的控制方法
US20220377309A1 (en) * 2021-05-19 2022-11-24 Snap Inc. Hardware encoder for stereo stitching

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110056953A (ko) * 2009-11-23 2011-05-31 엘지전자 주식회사 이동 단말기 및 그 제어방법
KR101265613B1 (ko) * 2006-07-18 2013-05-22 엘지전자 주식회사 영상 촬영 장치 및 영상 촬영 장치의 파노라마 이미지 제작방법
KR20130103939A (ko) * 2012-03-12 2013-09-25 엘지전자 주식회사 단말기 및 이미지 촬영 방법
KR101473215B1 (ko) * 2008-04-18 2014-12-17 삼성전자주식회사 파노라마 이미지 생성장치 및 그 방법
KR20150037975A (ko) * 2013-08-24 2015-04-08 주식회사 와이드벤티지 사각 이미지 공급 장치를 이용한 파노라마 이미지 생성 장치

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2348074B (en) * 1996-08-06 2000-11-01 Live Picture Inc Method and system for encoding movies,panoramas and large images for on-line interactive viewing and gazing
US6618511B1 (en) * 1999-12-31 2003-09-09 Stmicroelectronics, Inc. Perspective correction for panoramic digital camera with remote processing
US6885392B1 (en) * 1999-12-31 2005-04-26 Stmicroelectronics, Inc. Perspective correction for preview area of panoramic digital camera
US6456323B1 (en) * 1999-12-31 2002-09-24 Stmicroelectronics, Inc. Color correction estimation for panoramic digital camera
US6717608B1 (en) * 1999-12-31 2004-04-06 Stmicroelectronics, Inc. Motion estimation for panoramic digital camera
US6771304B1 (en) * 1999-12-31 2004-08-03 Stmicroelectronics, Inc. Perspective correction device for panoramic digital camera
US6677981B1 (en) * 1999-12-31 2004-01-13 Stmicroelectronics, Inc. Motion play-back of still pictures comprising a panoramic view for simulating perspective
US20040001091A1 (en) * 2002-05-23 2004-01-01 International Business Machines Corporation Method and apparatus for video conferencing system with 360 degree view
US20030220971A1 (en) * 2002-05-23 2003-11-27 International Business Machines Corporation Method and apparatus for video conferencing with audio redirection within a 360 degree view
US7424218B2 (en) * 2005-07-28 2008-09-09 Microsoft Corporation Real-time preview for panoramic images
US8115801B2 (en) * 2008-05-15 2012-02-14 Arcsoft, Inc. Method of automatic photographs stitching
SE0900522A1 (sv) 2009-04-17 2010-10-18 Scalado Ab Bildkodare och metod för kodning av bilder
JP5347890B2 (ja) 2009-10-09 2013-11-20 ソニー株式会社 画像処理装置および方法、並びにプログラム
CN101866482B (zh) 2010-06-21 2012-02-15 清华大学 基于摄像设备自标定技术的全景图拼接方法和装置
JP5652142B2 (ja) 2010-11-11 2015-01-14 ソニー株式会社 撮像装置、表示制御方法およびプログラム
JP5853359B2 (ja) * 2010-11-11 2016-02-09 ソニー株式会社 撮像装置、撮像装置の制御方法およびプログラム
KR101196409B1 (ko) * 2010-12-20 2012-11-05 삼성전자주식회사 제이펙 파일 생성 방법 및 장치
US8331703B2 (en) * 2011-02-18 2012-12-11 Arm Limited Parallel image encoding
US20140351073A1 (en) * 2011-05-11 2014-11-27 Proiam, Llc Enrollment apparatus, system, and method featuring three dimensional camera
KR101309664B1 (ko) 2011-06-13 2013-09-23 동의대학교 산학협력단 나노 구조체 제조 방법
JP5635551B2 (ja) * 2012-03-29 2014-12-03 京セラドキュメントソリューションズ株式会社 画像処理装置および画像形成装置
US9967549B2 (en) * 2013-03-20 2018-05-08 Mediatek Inc. 3D image capture method with 3D preview of preview images generated by monocular camera and related electronic device thereof
KR101632046B1 (ko) * 2013-04-12 2016-06-20 일리노이즈 툴 워크스 인코포레이티드 고해상도 컴퓨터 단층 촬영
US10257494B2 (en) * 2014-09-22 2019-04-09 Samsung Electronics Co., Ltd. Reconstruction of three-dimensional video

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101265613B1 (ko) * 2006-07-18 2013-05-22 엘지전자 주식회사 영상 촬영 장치 및 영상 촬영 장치의 파노라마 이미지 제작방법
KR101473215B1 (ko) * 2008-04-18 2014-12-17 삼성전자주식회사 파노라마 이미지 생성장치 및 그 방법
KR20110056953A (ko) * 2009-11-23 2011-05-31 엘지전자 주식회사 이동 단말기 및 그 제어방법
KR20130103939A (ko) * 2012-03-12 2013-09-25 엘지전자 주식회사 단말기 및 이미지 촬영 방법
KR20150037975A (ko) * 2013-08-24 2015-04-08 주식회사 와이드벤티지 사각 이미지 공급 장치를 이용한 파노라마 이미지 생성 장치

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP3399742A4 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108174084A (zh) * 2017-12-13 2018-06-15 深圳进化动力数码科技有限公司 全景视频处理方法及终端设备
US20220084159A1 (en) * 2018-09-21 2022-03-17 Samsung Electronics Co., Ltd. Image signal processor, method of operating the image signal processor, and application processor including the image signal processor

Also Published As

Publication number Publication date
EP3399742B1 (en) 2020-08-05
US10868959B2 (en) 2020-12-15
US20190037138A1 (en) 2019-01-31
KR20170096736A (ko) 2017-08-25
CN108605100A (zh) 2018-09-28
KR102460906B1 (ko) 2022-11-01
EP3399742A1 (en) 2018-11-07
EP3399742A4 (en) 2018-11-21

Similar Documents

Publication Publication Date Title
WO2017142182A1 (ko) 이미지 처리 방법 및 이를 지원하는 전자 장치
WO2017209560A1 (ko) 화면 출력 방법 및 이를 지원하는 전자 장치
WO2017209528A1 (en) Electronic apparatus and operating method thereof
WO2018128389A1 (en) Electronic device and method for displaying history of executed application thereof
WO2017135599A1 (ko) 외부 전자 장치를 제어하기 위한 방법 및 전자 장치
WO2016144102A1 (ko) 카메라 모듈을 포함하는 전자 장치 및 전자 장치의 이미지 처리 방법
WO2017116052A1 (ko) 컨텐트 인식 장치 및 그 동작 방법
WO2018139752A1 (ko) 복수의 카메라를 제어하는 방법 및 전자 장치
WO2017052113A1 (ko) 전자 장치 및 촬영 방법
WO2018139870A1 (en) Electronic device and method for capturing image in electronic device
WO2017146482A1 (ko) 음성 인식 제어를 제공하는 전자 장치 및 그 동작 방법
WO2017171248A1 (ko) 이미지를 처리하기 위한 전자 장치 및 방법
WO2018106019A1 (ko) 콘텐츠 출력 방법 및 이를 지원하는 전자 장치
US20160286132A1 (en) Electronic device and method for photographing
WO2017135675A1 (ko) 이미지 처리장치 및 방법
WO2017111313A1 (ko) 웹푸시를 이용한 푸시 서비스 제공 방법 및 이를 지원하는 전자 장치
WO2018124774A1 (ko) 전자 장치 및 그 제어 방법
WO2017183930A1 (ko) 전자 장치 및 그 제어 방법
WO2017135764A1 (ko) 애플리케이션을 상호 연동하는 전자 장치 및 이를 위한 방법
WO2017061720A1 (en) Method of processing image of electronic device and electronic device thereof
AU2017306243B2 (en) Electronic device and method for outputting thumbnail corresponding to user input
WO2018124692A1 (ko) 전자 장치 및 전자 장치 제어 방법
WO2017099392A1 (ko) 전자 장치 및 전자 장치의 디스플레이 방법
WO2016036117A1 (ko) 디스플레이 제어 방법 및 그 전자 장치
WO2018182282A1 (ko) 전자 장치 및 그의 이미지 처리 방법

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16890772

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2016890772

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2016890772

Country of ref document: EP

Effective date: 20180802