US9762848B2 - Automatic adjustment of video orientation - Google Patents

Automatic adjustment of video orientation Download PDF

Info

Publication number
US9762848B2
US9762848B2 US13/838,686 US201313838686A US9762848B2 US 9762848 B2 US9762848 B2 US 9762848B2 US 201313838686 A US201313838686 A US 201313838686A US 9762848 B2 US9762848 B2 US 9762848B2
Authority
US
United States
Prior art keywords
video
orientation
image frames
standard
shaking
Prior art date
Legal status (The legal status 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 status listed.)
Active, expires
Application number
US13/838,686
Other versions
US20140267901A1 (en
Inventor
Maciek S. Nowakowski
Balazs Szabo
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Priority to US13/838,686 priority Critical patent/US9762848B2/en
Assigned to GOOGLE INC. reassignment GOOGLE INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SZABO, Balazs, NOWAKOWSKI, Maciek S.
Priority to PCT/US2014/029579 priority patent/WO2014144959A1/en
Priority to CN202110541522.2A priority patent/CN113438511B/en
Priority to JP2016503148A priority patent/JP6563896B2/en
Priority to EP20172528.0A priority patent/EP3726829A1/en
Priority to EP14723197.1A priority patent/EP2974272B1/en
Priority to CN201480016187.2A priority patent/CN105247850A/en
Publication of US20140267901A1 publication Critical patent/US20140267901A1/en
Priority to US15/701,403 priority patent/US10469797B2/en
Application granted granted Critical
Publication of US9762848B2 publication Critical patent/US9762848B2/en
Assigned to GOOGLE LLC reassignment GOOGLE LLC CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: GOOGLE INC.
Priority to US16/673,923 priority patent/US10887543B2/en
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/23418Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/01Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level
    • H04N7/0117Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level involving conversion of the spatial resolution of the incoming video signal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformation in the plane of the image
    • G06T3/60Rotation of a whole image or part thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234345Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements the reformatting operation being performed only on part of the stream, e.g. a region of the image or a time segment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234363Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the spatial resolution, e.g. for clients with a lower screen resolution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
    • 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/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • H04N23/681Motion detection
    • 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/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • H04N23/681Motion detection
    • H04N23/6811Motion detection based on the image signal
    • H04N5/23251
    • H04N5/23254
    • 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/2628Alteration of picture size, shape, position or orientation, e.g. zooming, rotation, rolling, perspective, translation

Definitions

  • the field generally relates to video images and more specifically to the presentation of video images.
  • user generated videos may be captured from a variety of different orientations, which can result in the incorrect display of video content. For example, a user may inadvertently or mistakenly rotate a recording device while capturing a video. As a result, one or more portions of the video may be displayed sideways or upside down. Further, a user may not become aware of such a result until a video is later presented on a fixed display.
  • Embodiments generally relate to the adjustment and correction of video images.
  • a computing device receives a video comprising a plurality of image frames and detects an orientation change in the video. The computing device then determines a standard orientation for the video and adjusts the video to the standard orientation by resizing one or more of the image frames in the video and rotating one or more of the image frames in the video to the standard orientation.
  • a computer-readable storage medium has instructions recorded thereon, that when executed by a processor, cause the processor to perform operations.
  • the instructions include computer-readable program code configured to cause the processor to receive a video comprising a plurality of image frames, detect an orientation change in the video, determine a standard orientation for the video, and adjust the video to the standard orientation by resizing one or more of the image frames and by rotating one or more of the image frames to the standard orientation.
  • a system in a further embodiment, includes a memory and a processing device coupled to the memory that is configured to receive a video comprising a plurality of image frames, detect an orientation change in the video, determine a standard orientation for the video, and adjust the video to the standard orientation by resizing one or more of the image frames and by rotating one or more of the image frames to the standard orientation.
  • FIG. 1 illustrates an exemplary system architecture, in accordance with various embodiments of the present disclosure.
  • FIG. 2 is a block diagram of a video adjustment system, in accordance with an embodiment.
  • FIG. 3 is a flow diagram illustrating automatic adjustment of video orientation, according to an embodiment.
  • FIG. 4 is a flow diagram illustrating additional aspects of automatic adjustment of video content, according to an embodiment.
  • FIG. 5 is a block diagram of an exemplary computer system that may perform one or more of the operations described herein.
  • Millions of user-generated videos are shared on the Internet each day. Many of these videos have been recorded on mobile devices, such as smart phones and digital cameras. In addition, many of these devices are equipped with one or more sensors, such as gyroscopes and accelerometers, which capture orientation and positioning of a device.
  • sensors such as gyroscopes and accelerometers, which capture orientation and positioning of a device.
  • a user may capture a video using a smartphone. The user then may upload the video to a video sharing or social networking website. The user then may preview the uploaded video before sharing it, for example, either publicly or privately. During the preview, the user may discover that multiple segments of the video have been captured from one or more incorrect orientations. For example, different portions of the video may be displayed sideways, upside-down and/or at an angle. To correct the video, the user should transfer the video content to a system with video editing software and manually adjust one or more segments of the video. The user then should upload the manually corrected video to the website. Thus, the detection and correction of orientation changes in user-captured video content are both inconvenient and burdensome to users.
  • Embodiments of the present disclosure address the above deficiencies by adjusting video content to correct segments of a video that have been captured from one or more incorrect orientations. Detection and correction of misoriented video content may be performed automatically so that a user does not need to perform manual correction using a video editing software tool.
  • a user may upload a video from a mobile device to a video sharing website providing automatic adjustment of video content.
  • the website may analyze positional and/or orientation data associated with image frames from the video to detect that one or more orientation changes, shaking, and/or excessive movement occur in the video.
  • the website may notify the user of the condition, may allow the user to preview the video, and may allow the user to select a standard orientation and/or baseline alignment that will be used to correct the video.
  • the website then may correct the video so that the orientation of each video frame is consistent with the standard orientation and/or baseline alignment selected by the user.
  • the user then may view and share the corrected video without having to manually adjust video image frames using a video editing tool.
  • the video adjustment system may automatically detect and correct video content recorded in one or more different orientations at various times throughout an entire video.
  • the video adjustment system also may detect and correct shaking and movement detected at various times throughout a video.
  • the adjustment may be applied to one or more video image frames to produce an adjusted video that is displayed, for example, consistently in a single fixed, standard orientation and/or position.
  • FIG. 1 illustrates an exemplary system architecture, in accordance with various embodiments of the present disclosure.
  • the system architecture 100 includes a server machine 110 , a data store 140 and client machines 102 A- 102 N connected to a network 104 .
  • Network 104 may be a public network (e.g., the Internet), a private network (e.g., a local area network (LAN) or wide area network (WAN)), or a combination thereof.
  • LAN local area network
  • WAN wide area network
  • Data store 140 is persistent storage that is capable of storing various types of data, such as video and image content.
  • data store 140 might be a network-attached file server, while in other embodiments data store 140 might be some other type of persistent storage such as an object-oriented database, a relational database, and so forth.
  • Data store 140 may include user generated content (video and/or image content) that is uploaded by client machines 102 A- 102 N. The data may additionally or alternatively include content provided by one or more other parties.
  • Image and video content may be added to the data store 140 as discrete files (e.g., motion picture experts group (MPEG) files, windows media video (WMV) files, joint photographic experts group (JPEG) files, graphics interchange format (GIF) files, portable network graphics (PNG) files, etc.) or as components of a single compressed file (e.g., a zip file).
  • discrete files e.g., motion picture experts group (MPEG) files, windows media video (WMV) files, joint photographic experts group (JPEG) files, graphics interchange format (GIF) files, portable network graphics (PNG) files, etc.
  • GIF graphics interchange format
  • PNG portable network graphics
  • data store 140 is used to store video and image content comprising position and/or orientation metadata. In another embodiment, data store 140 stores one or more of video and image content, and position and/or orientation metadata that is associated or linked to the video and image content.
  • the client machines 102 A- 102 N may be personal computers (PC), laptops, mobile phones, tablet computers, a camera, or any other computing device.
  • the client machines 102 A- 102 N may run an operating system (OS) that manages hardware and software of the client machines 102 A- 102 N.
  • OS operating system
  • a browser (not shown) may run on the client machines (e.g., on the OS of the client machines).
  • the browser may be a web browser that can access content served by a web server.
  • the browser may display video content and other visual media provided by a web server and may allow editing of videos and other visual media.
  • Server machine 110 may be a rackmount server, a router computer, a personal computer, a portable digital assistant, a mobile phone, a laptop computer, a tablet computer, a camera, a video camera, a netbook, a desktop computer, a media center, or any combination of the above.
  • Server machine 110 may include a web server 120 and a video adjustment system 130 .
  • the web server 120 and video adjustment system 130 may run on one or more different machines.
  • Web server 120 may serve video content from data store 140 to clients 102 A- 102 N. Clients 102 A- 102 N may locate, access and view video content from web server 120 using a web browser. Web server 120 also may receive video content from clients 102 A- 102 N that is saved in data store 140 for purposes that may include preservation and distribution.
  • Web server 120 may receive queries for video content and perform searches for video content using data store 140 to locate video data satisfying the search queries. Web server 120 may then send to a client 102 A- 102 N video data results matching the search query.
  • web server 120 provides an application configured to allow clients 102 A- 102 N to upload, preview, edit, display and publish video content.
  • web server 120 may include or access one or more applications providing such functionality.
  • web server 120 communicates with one or more application servers that may be hosted with or hosted apart from web server 120 on one or more server machines 110 .
  • Such functionality also may be provided, for example, by one or more different web applications, standalone applications, systems, plugins, web browser extensions, and application programming interfaces (APIs).
  • APIs application programming interfaces
  • a video is a set of sequential image frames representing a scene in motion. For example, a series of sequential images may be captured continuously or later reconstructed to produce animation.
  • Video content may be presented in various formats including, but not limited to, analog, digital, two-dimensional and three-dimensional video. Further, video content may include movies, video clips or any set of animated images to be displayed in sequence.
  • Video adjustment system 130 may analyze video content to determine whether one or more orientation changes are present in the video content.
  • the video adjustment system 130 may analyze orientation information associated with one or more video image frames.
  • the orientation information may include, for example, a specific position and/or orientation of a recording device at the moment when a video image frame is/was captured.
  • a video recording device may include one or more sensors, such as gyroscopic sensors and/or accelerometers that measure orientation and/or position of the device.
  • the video recording device may receive and store such measurements from the one or more sensors as metadata within corresponding video image frames.
  • measurements such as position and/or orientation data that are associated with one or more video image frames may be stored apart from the video image frames and may be associated/referenced at a later time.
  • video adjustment system 130 may determine whether a series of video image frames associated with a video uploaded by a client 102 A- 102 N have been recorded from multiple orientations. Video adjustment system 130 also may perform automatic adjustment of video content to correct one or more changes in video image frame orientation occurring throughout a video.
  • web server 120 provides a web application to clients 102 A- 102 N, which may reside on one or more server machines 110 .
  • the web application may include a graphical user interface configured to allow users to upload, display and manage video content.
  • the web application also may include or utilize a video adjustment system 130 .
  • the video adjustment system 130 may analyze video content during an upload process automatically based on one or more of a system setting, user preference, user request, or default.
  • Video content analysis also may be performed by video adjustment system 130 , for example, based on a user request received after the video content has been uploaded to a data store 140 .
  • a user may initiate a request, for example, using one or more commands (e.g., voice, text, motion) or by performing one or more actions/interactions with the graphical user interface (e.g., button click, keyboard shortcut).
  • video adjustment system 130 determines that video content has been recorded in multiple orientations and provides a corresponding indication to a user (e.g., content owner, content administrator, content viewer).
  • the web application may notify the user about the condition using a graphical user interface. For example, the web application may display a message or alert, update a label, redirect or refresh the interface, and/or provide one or more additional selectable controls (e.g., preview video orientation correction button, perform video orientation correction button).
  • the graphical user interface is configured to allow a user to initiate video orientation correction, preview a full or sample version of adjusted video content with a proposed correction, save adjusted video content, and replace existing video content with adjusted video content.
  • the graphical user interface also may be further configured to allow a user to preview adjusted/corrected video content (e.g., sample clip, full-version) with corresponding original video content.
  • adjusted video content may be played simultaneously and alongside original video content to allow side-by-side comparison.
  • a full or sample version of adjusted video content having a proposed corrected orientation is automatically generated and available for preview upon user request.
  • FIG. 2 is a block diagram of a video adjustment system 130 , in accordance with an embodiment of the present disclosure.
  • the video adjustment system 130 includes a video receiving module 202 , a video analysis module 204 , a video orientation determination module 206 , a video adjustment module 208 , and a video delivery module 210 .
  • functionality associated with one or more of video receiving module 202 , video analysis module 204 , video orientation determination module 206 , video adjustment module 208 , and video delivery module 210 may be combined, divided and organized in various arrangements.
  • video adjustment system 130 is coupled to data store 140 and working data store 240 .
  • Data store 140 includes video data 220 and image data 230 .
  • Working data store 240 includes temporary video data 250 and temporary image data 260 .
  • Video data 220 generally refers to any type of moving image, which includes, but is not limited to movie films, videos, digital videos and other forms of animated drawings or display.
  • video data 220 may include digital videos having a sequence of static image frames that may be stored as image data 230 .
  • each image frame may represent a snapshot of a scene that has been captured according to a time interval.
  • Video data 220 may include computer animations, including two-dimensional and three-dimensional graphics. Video data 220 also may include any sequence of images, including graphical drawings that create an illusion of movement.
  • Image data 230 generally refers to any projection of real space through a lens onto a camera sensor.
  • Image data 230 includes, but is not limited to, any type of two-dimensional image, three-dimensional image, video content and/or drawing.
  • video adjustment system 130 utilizes working data store 240 as temporary storage space to perform adjusting of video data 220 and image data 230 .
  • Working data store 240 may include, for example, any type or combination of volatile and non-volatile storage (e.g., disk, memory).
  • working data store 240 contains temporary video data 250 and temporary image data 260 .
  • temporary video data 250 may include one or more copies of video data 220 , such as original and modified/adjusted versions.
  • temporary image data 260 may include one or more copies of image data 230 , such as original and modified/adjusted video image frames.
  • Working data store 240 also may include temporary data and results produced by video adjustment system 130 .
  • working data store 240 may include original video content, original video image frames, corrected video image frames, and adjusted video content.
  • video adjustment system 130 may use working data store 240 , for example, to perform adjustment calculations, to persist intermediate processing results, and to provide adjusted video content having corrected video orientation to users.
  • Video receiving module 202 receives video content from one or more sources.
  • video receiving module may receive video content that includes a plurality of video image frames on a server machine 110 or a client device 102 A- 102 N, such as a camera or a smartphone.
  • video receiving module 202 receives video content that has been recorded and stored directly on the same computing device.
  • video receiving module 202 receives video content from another source, such as an external video recording device, a different client 102 A- 102 N, or a server machine 110 .
  • video analysis module 204 analyzes video data 220 and/or image data 230 to determine when a series of video image frames associated with video content have been recorded from one or more different orientations. For example, visual analysis module 204 may read and compare positional and/or orientation-based metadata associated with one or more video image frames. The video analysis module 204 may, for example, compare position and/or orientation metadata between and/or across multiple video image frames to determine whether orientation changes, shaking, and/or movement occur in the video content.
  • video analysis module 204 detects a change in video orientation based on a threshold.
  • a threshold may be defined to specify a degree of rotation between two or more video image frames that will be considered an orientation change.
  • the threshold may be provided, for example, as a user preference, system setting or default value.
  • Video orientation determination module 206 determines a standard orientation for the video content.
  • an original orientation of a video may be determined as the standard orientation.
  • the standard orientation for a video also may be determined based on the most common orientation detected throughout the video, a user preference, a user selection, or orientation and/or size of a display device/video player where the video is to be displayed.
  • Video adjustment module 208 performs adjustment and resizing of one or more video image frames in a video. For example, video adjustment module 208 may calculate a degree of rotation required to adjust a video image frame from a non-standard orientation to the standard orientation determined for a video. The degree of rotation may be calculated, for example, based on the difference between orientation of a video image frame and the standard orientation. The video adjustment module 208 then may adjust the video image frame to the standard orientation based on the calculated degree of rotation. In addition, video adjustment module 208 also may resize video image frames. For example, video adjustment module may extend resolution of video image frames and/or crop video image frames to provide a uniform video image display size throughout an adjusted video.
  • Video delivery module 210 generates an adjusted video in the standard orientation.
  • video delivery module 210 generates an adjusted video in the standard orientation using a set of adjusted video frames received from video adjustment module 208 .
  • Video delivery module 210 then may provide the adjusted video in the standard orientation to a user for display.
  • FIG. 3 is a flow diagram illustrating automatic adjustment of video orientation, according to an embodiment.
  • the method 300 is performed by processing logic that may comprise hardware (circuitry, dedicated logic, etc.), software (such as is run on a general purpose computer system or a dedicated machine), or a combination of both.
  • the method 300 is performed by the server machine 110 of FIG. 1 .
  • the method 300 may be performed by video adjustment system 130 running on server machine 110 or one or more other computing devices.
  • Method 300 begins at stage 302 , when video content is received.
  • video receiving module 202 receives video content that includes a plurality of video image frames.
  • video receiving module 202 may receive video content that has been recorded and stored on the same computing device.
  • video receiving module 202 may receive video content from another source, such as a different computer system.
  • video analysis module 204 analyzes video image frames from video content received at stage 302 .
  • video analysis module may analyze position and/or orientation metadata stored within video image frames to determine when an orientation change has occurred in a video.
  • a video recording device may include and continuously monitor device sensors, such as one or more gyroscopes, as video content is recorded.
  • the video recording device then may store positional and/or orientation information received from one or more of the sensors in video image frames as metadata.
  • position and/or orientation data is captured continuously by a video recording device and stored in each respective video image frame as metadata.
  • only changes to position and/or orientation data are captured in the video image frames as metadata when the changes occur during video recordation.
  • orientation data stored in one or more image frames may be compared to determine whether an orientation change has occurred in a video. For example, an orientation change may be detected when a single or cumulative difference in orientation between two or more video image frames exceeds one or more defined thresholds.
  • orientation and/or position data associated with one or more video image frames may be compared to detect and correct shaking and/or other unintended or disruptive movement that occurs during a recorded video.
  • orientation and/or position data associated with one or more video image frames is used to establish a baseline alignment (e.g, a standard orientation or another standard position).
  • Video image frames that deviate from the established baseline alignment may be adjusted to the determined baseline alignment to correct shaking and/or other unintended or disruptive movement occurring across video image frames.
  • a standard orientation for displaying the video content is determined.
  • a standard orientation is a single, fixed orientation used to display video content.
  • a standard orientation may be determined based on the original orientation of a video, the most common orientation detected throughout a video, a user preferred playback orientation, a user selected orientation, orientation of a device or video player where video content is to be displayed, and/or one or more attributes of a video player that will display the video content (e.g., video player height, width, screen position, orientation, is fixed, is modifiable, etc.).
  • video adjustment module 208 performs adjustment and resizing of one or more video image frames in a video. For example, video adjustment module 208 may calculate a degree of rotation required to adjust a video image frame from its original orientation to the standard orientation. Video adjustment module 208 also may resize video content to a standard display resolution.
  • video adjustment module 208 determines a degree of rotation required to adjust a video image frame to the standard orientation. In one example, video adjustment module 208 calculates the difference between orientation of a recorded video frame and the standard orientation determined for a video. Video orientation module 208 then may adjust the video frame based on the determination to correct the variation.
  • video adjustment module 208 also may resize video image frames. For example, video adjustment module 208 may crop video image frames to provide a standard display size for an adjusted video and/or to fit a portion of a video image into a different orientation or playback window.
  • video adjustment module 208 calculates a standard display size for a video based on the shortest sides of all video image frames. For example, a video with a landscape orientation resolution of 3000 ⁇ 2000 and a portrait orientation resolution of 2000 ⁇ 3000 would have a standard display size of 2000 ⁇ 2000. Thus, the middle 2000 ⁇ 2000 square regions of both 2000 ⁇ 3000 portrait orientation video image frames and 3000 ⁇ 2000 landscape orientation video image frames may be adjusted to a standard orientation and displayed together at a common display size of 2000 ⁇ 2000.
  • each 2000 ⁇ 3000 portrait orientation video image frame is cropped so that the middle 2000 ⁇ 2000 region is retained.
  • the cropped portrait orientation video image frame then may be rotated, centered, and displayed with 3000 ⁇ 2000 landscape video frames in an adjusted video.
  • the middle 2000 ⁇ 2000 square of a 3000 ⁇ 2000 landscape orientation video image frame may be rotated, centered, and displayed with 2000 ⁇ 3000 portrait orientation video frames in an adjusted video.
  • a video with an original 3000 ⁇ 2000 landscape orientation resolution may be rotated to a 2000 ⁇ 3000 portrait orientation resolution.
  • 2000 ⁇ 3000 portrait orientation video image frames in the video then may be rotated to match the orientation of the adjusted landscape image frames and resized to a 1500 ⁇ 2000 area to keep the aspect ratio.
  • FIG. 4 is a flow diagram illustrating additional aspects of automatic adjustment of video content, according to an embodiment.
  • the method 400 is performed by processing logic that may comprise hardware (circuitry, dedicated logic, etc.), software (such as is run on a general purpose computer system or a dedicated machine), or a combination of both.
  • video content is received.
  • video content may be received or assembled from one or more sources.
  • video content may arrive as a single video file having a set of sequential image frames.
  • a video file may be assembled and/or created from two or more images having a sequential ordering or relationship.
  • Stage 402 may be performed by, for example, video receiving module 202 .
  • an orientation change and/or an alignment change i.e., shaking or video image movement
  • orientation and/or position data from two or more video image frames is analyzed and compared to determine when an orientation change and/or alignment change occurs in a video.
  • an orientation change and/or an alignment change may be detected in a video when a change in orientation and/or position data between two or more video image frames exceeds a threshold.
  • Stage 404 may be performed by, for example, video analysis module 204 .
  • a user is notified of the detected orientation change and/or alignment change in the video content.
  • a user may receive a notification of a detected orientation change and/or alignment change on a device where the video content has been recorded.
  • a user may receive a notification from a video sharing or social networking website where the user has uploaded the video content.
  • the notification provided to the user may indicate that camera rotation was detected in the video.
  • the user may be provided with one or more of an option to preview the video, to preview one or more detected changes in orientation or alignment, and to automatically correct one or more detected orientation or alignment changes in the video. Further, the user may be prompted to select a standard orientation and/or baseline alignment for displaying the video.
  • Stage 406 may be performed by, for example, video orientation determination module 206 .
  • a standard orientation and/or baseline alignment to use for displaying the video content is determined based on user feedback.
  • a standard orientation and/or baseline alignment are received based on user input that has been received. For example, a user may select a standard orientation and/or baseline alignment after being notified of a detected change in orientation and/or alignment in video content. The user also may select a standard orientation and/or baseline alignment after viewing a preview of the detected changes and/or other portions of the video content.
  • a standard orientation may be determined based on the original orientation and/or alignment of a video, the most common orientation or alignment detected throughout a video, a user preferred playback orientation, a user selected orientation/alignment, or orientation of a device or video player where video content is to be displayed.
  • adjustment of video content may be initiated automatically by video adjustment system 130 , based on input received from a user, or based on a combination of both system and user input.
  • Stage 408 may be performed by, for example, video orientation determination module 208 .
  • the video content is adjusted to the standard orientation and/or baseline alignment by modifying one or more of the video image frames.
  • one or more of the image frames may be adjusted by rotating the image frames from a non-standard orientation to the standard orientation determined at stage 408 .
  • one or more of the images frames also may be resized based on a standard video display size determined for an adjusted video.
  • video image frames are resized by extending resolution of the video image frames to a square of the longest sides of the video. For example, a video with a landscape resolution of 3000 ⁇ 2000 and a portrait resolution of 2000 ⁇ 3000 may be extended to 3000 ⁇ 3000. Thus, the video image frames may be rotated to the standard orientation and displayed together in an adjusted video without losing content. Stage 410 may be performed by, for example, video adjustment module 208 .
  • the adjusted video is provided to the user in the standard orientation and/or baseline alignment.
  • the adjusted video may be generated based on the image frames that have been adjusted to a standard orientation and/or baseline alignment.
  • the adjusted video content then may be presented to a user for preview or full display.
  • a video player or a video-playing website may not resize video image frames.
  • the video image frames may be rotated to a standard orientation and displayed in an original size.
  • landscape video image frames of 600 ⁇ 400 may be displayed in their original size in a standard orientation.
  • Portrait image frames of 400 ⁇ 600 then may be displayed in their original size in a standard orientation by resizing the video player area (and vice versa).
  • content such as text surrounding the video player/video-playing area may be repositioned automatically one or more times when the video player area is automatically resized.
  • Stage 412 may be performed by, for example, by video delivery module 210 .
  • FIG. 5 illustrates a diagram of a machine in the exemplary form of a computer system 500 within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed.
  • the machine may be connected (e.g., networked) to other machines in a LAN, an intranet, an extranet, or the Internet.
  • the machine may operate in the capacity of a server or a client machine in client-server network environment, or as a peer machine in a peer-to-peer (or distributed) network environment.
  • the machine may be a personal computer (PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), a cellular telephone, a web appliance, a server, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine.
  • PC personal computer
  • PDA Personal Digital Assistant
  • STB set-top box
  • WPA Personal Digital Assistant
  • a cellular telephone a web appliance
  • server a server
  • network router switch or bridge
  • the exemplary computer system 500 includes a processing device (processor) 502 , a main memory 504 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM), double data rate (DDR SDRAM), or DRAM (RDRAM), etc.), a static memory 506 (e.g., flash memory, static random access memory (SRAM), etc.), and a data storage device 518 , which communicate with each other via a bus 530 .
  • a processing device e.g., a main memory 504
  • main memory 504 e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM), double data rate (DDR SDRAM), or DRAM (RDRAM), etc.
  • DRAM dynamic random access memory
  • SDRAM synchronous DRAM
  • DDR SDRAM double data rate
  • RDRAM DRAM
  • static memory 506 e.g., flash memory, static random access memory
  • Processor 502 represents one or more general-purpose processing devices such as a microprocessor, central processing unit, or the like. More particularly, the processor 502 may be a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets or processors implementing a combination of instruction sets.
  • the processor 502 may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), a network processor, or the like.
  • the processor 502 is configured to execute instructions 522 for performing the operations and steps discussed herein.
  • the computer system 500 may further include a network interface device 508 .
  • the computer system 500 also may include a video display unit 510 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device 512 (e.g., a keyboard), a cursor control device 514 (e.g., a mouse), and a signal generation device 516 (e.g., a speaker).
  • a video display unit 510 e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)
  • an alphanumeric input device 512 e.g., a keyboard
  • a cursor control device 514 e.g., a mouse
  • a signal generation device 516 e.g., a speaker
  • the data storage device 518 may include a computer-readable storage medium 528 on which is stored one or more sets of instructions 522 (e.g., software) embodying any one or more of the methodologies or functions described herein.
  • the instructions 522 may also reside, completely or at least partially, within the main memory 504 and/or within the processor 502 during execution thereof by the computer system 500 , the main memory 504 and the processor 502 also constituting computer-readable storage media.
  • the instructions 522 may further be transmitted or received over a network 520 via the network interface device 508 .
  • the instructions 522 include instructions for a video adjustment module (e.g., video adjustment system 130 of FIG. 1 ) and/or a software library containing methods that call a video adjustment module.
  • a video adjustment module e.g., video adjustment system 130 of FIG. 1
  • a software library containing methods that call a video adjustment module.
  • the computer-readable storage medium 528 is shown in an exemplary embodiment to be a single medium, the term “computer-readable storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions.
  • computer-readable storage medium shall also be taken to include any medium that is capable of storing, encoding or carrying a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present disclosure.
  • computer-readable storage medium shall accordingly be taken to include, but not be limited to, solid-state memories, optical media, and magnetic media.
  • inventions of the present disclosure also relate to an apparatus for performing the operations herein.
  • This apparatus may be constructed for the intended purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer.
  • a computer program may be stored in a computer readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions.

Abstract

Methods, systems and computer program products for automatic adjustment of video orientation are provided. A computer-implemented method may include receiving a video comprising a plurality of image frames, detecting an orientation change in the video, determining a standard orientation for the video, and adjusting the video to the standard orientation by resizing one or more of the image frames and by rotating one or more of the image frames to the standard orientation. The adjusted video in the standard orientation then may be provided to a user.

Description

TECHNICAL FIELD
The field generally relates to video images and more specifically to the presentation of video images.
BACKGROUND
Many websites allow users to share videos with others around the world. In addition, technological advancements also have made it increasingly convenient for users to capture and share their own video content. For example, smartphones having one or more high-quality digital cameras, gyroscopic sensors, abundant storage space, and mobile broadband allow users to flexibly record and share videos from virtually anywhere.
However, user generated videos may be captured from a variety of different orientations, which can result in the incorrect display of video content. For example, a user may inadvertently or mistakenly rotate a recording device while capturing a video. As a result, one or more portions of the video may be displayed sideways or upside down. Further, a user may not become aware of such a result until a video is later presented on a fixed display.
SUMMARY
Embodiments generally relate to the adjustment and correction of video images. In one embodiment, a computing device receives a video comprising a plurality of image frames and detects an orientation change in the video. The computing device then determines a standard orientation for the video and adjusts the video to the standard orientation by resizing one or more of the image frames in the video and rotating one or more of the image frames in the video to the standard orientation.
In another embodiment, a computer-readable storage medium has instructions recorded thereon, that when executed by a processor, cause the processor to perform operations. The instructions include computer-readable program code configured to cause the processor to receive a video comprising a plurality of image frames, detect an orientation change in the video, determine a standard orientation for the video, and adjust the video to the standard orientation by resizing one or more of the image frames and by rotating one or more of the image frames to the standard orientation.
In a further embodiment, a system includes a memory and a processing device coupled to the memory that is configured to receive a video comprising a plurality of image frames, detect an orientation change in the video, determine a standard orientation for the video, and adjust the video to the standard orientation by resizing one or more of the image frames and by rotating one or more of the image frames to the standard orientation.
Further embodiments, features, and advantages of the disclosure, as well as the structure and operation of the various embodiments of the disclosure are described in detail below with reference to accompanying drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
Various embodiments of the present disclosure will be understood more fully from the detailed description given below and from the accompanying drawings of various embodiments of the disclosure. In the drawings, like reference numbers may indicate identical or functionally similar elements. The drawing in which an element first appears is generally indicated by the left-most digit in the corresponding reference number.
FIG. 1 illustrates an exemplary system architecture, in accordance with various embodiments of the present disclosure.
FIG. 2 is a block diagram of a video adjustment system, in accordance with an embodiment.
FIG. 3 is a flow diagram illustrating automatic adjustment of video orientation, according to an embodiment.
FIG. 4 is a flow diagram illustrating additional aspects of automatic adjustment of video content, according to an embodiment.
FIG. 5 is a block diagram of an exemplary computer system that may perform one or more of the operations described herein.
DETAILED DESCRIPTION
Millions of user-generated videos are shared on the Internet each day. Many of these videos have been recorded on mobile devices, such as smart phones and digital cameras. In addition, many of these devices are equipped with one or more sensors, such as gyroscopes and accelerometers, which capture orientation and positioning of a device.
While mobile devices offer users convenience and flexibility in capturing and sharing their own videos, it is very easy to inadvertently move or rotate a mobile device when recording a video. As a result, one or more portions of a video may be captured from an incorrect orientation. In addition, one or more portions of a video also may contain unintended shaking and/or movement. However, a user is not typically aware of the unintended result until a video is played back at a later time, for example, on a fixed display such as a computer monitor.
In one example, a user may capture a video using a smartphone. The user then may upload the video to a video sharing or social networking website. The user then may preview the uploaded video before sharing it, for example, either publicly or privately. During the preview, the user may discover that multiple segments of the video have been captured from one or more incorrect orientations. For example, different portions of the video may be displayed sideways, upside-down and/or at an angle. To correct the video, the user should transfer the video content to a system with video editing software and manually adjust one or more segments of the video. The user then should upload the manually corrected video to the website. Thus, the detection and correction of orientation changes in user-captured video content are both inconvenient and burdensome to users.
Embodiments of the present disclosure address the above deficiencies by adjusting video content to correct segments of a video that have been captured from one or more incorrect orientations. Detection and correction of misoriented video content may be performed automatically so that a user does not need to perform manual correction using a video editing software tool.
For example, a user may upload a video from a mobile device to a video sharing website providing automatic adjustment of video content. The website may analyze positional and/or orientation data associated with image frames from the video to detect that one or more orientation changes, shaking, and/or excessive movement occur in the video. The website may notify the user of the condition, may allow the user to preview the video, and may allow the user to select a standard orientation and/or baseline alignment that will be used to correct the video. The website then may correct the video so that the orientation of each video frame is consistent with the standard orientation and/or baseline alignment selected by the user. The user then may view and share the corrected video without having to manually adjust video image frames using a video editing tool. Thus, the video adjustment system may automatically detect and correct video content recorded in one or more different orientations at various times throughout an entire video. The video adjustment system also may detect and correct shaking and movement detected at various times throughout a video. Further, the adjustment may be applied to one or more video image frames to produce an adjusted video that is displayed, for example, consistently in a single fixed, standard orientation and/or position.
FIG. 1 illustrates an exemplary system architecture, in accordance with various embodiments of the present disclosure. The system architecture 100 includes a server machine 110, a data store 140 and client machines 102A-102N connected to a network 104. Network 104 may be a public network (e.g., the Internet), a private network (e.g., a local area network (LAN) or wide area network (WAN)), or a combination thereof.
Data store 140 is persistent storage that is capable of storing various types of data, such as video and image content. In some embodiments data store 140 might be a network-attached file server, while in other embodiments data store 140 might be some other type of persistent storage such as an object-oriented database, a relational database, and so forth. Data store 140 may include user generated content (video and/or image content) that is uploaded by client machines 102A-102N. The data may additionally or alternatively include content provided by one or more other parties. Image and video content may be added to the data store 140 as discrete files (e.g., motion picture experts group (MPEG) files, windows media video (WMV) files, joint photographic experts group (JPEG) files, graphics interchange format (GIF) files, portable network graphics (PNG) files, etc.) or as components of a single compressed file (e.g., a zip file).
In an embodiment, data store 140 is used to store video and image content comprising position and/or orientation metadata. In another embodiment, data store 140 stores one or more of video and image content, and position and/or orientation metadata that is associated or linked to the video and image content.
The client machines 102A-102N may be personal computers (PC), laptops, mobile phones, tablet computers, a camera, or any other computing device. The client machines 102A-102N may run an operating system (OS) that manages hardware and software of the client machines 102A-102N. A browser (not shown) may run on the client machines (e.g., on the OS of the client machines). The browser may be a web browser that can access content served by a web server. The browser may display video content and other visual media provided by a web server and may allow editing of videos and other visual media.
Server machine 110 may be a rackmount server, a router computer, a personal computer, a portable digital assistant, a mobile phone, a laptop computer, a tablet computer, a camera, a video camera, a netbook, a desktop computer, a media center, or any combination of the above. Server machine 110 may include a web server 120 and a video adjustment system 130. In alternative embodiments, the web server 120 and video adjustment system 130 may run on one or more different machines.
Web server 120 may serve video content from data store 140 to clients 102A-102N. Clients 102A-102N may locate, access and view video content from web server 120 using a web browser. Web server 120 also may receive video content from clients 102A-102N that is saved in data store 140 for purposes that may include preservation and distribution.
Web server 120 may receive queries for video content and perform searches for video content using data store 140 to locate video data satisfying the search queries. Web server 120 may then send to a client 102A-102N video data results matching the search query. In one embodiment, web server 120 provides an application configured to allow clients 102A-102N to upload, preview, edit, display and publish video content. For example, web server 120 may include or access one or more applications providing such functionality. In one example, web server 120 communicates with one or more application servers that may be hosted with or hosted apart from web server 120 on one or more server machines 110. Such functionality also may be provided, for example, by one or more different web applications, standalone applications, systems, plugins, web browser extensions, and application programming interfaces (APIs).
A video is a set of sequential image frames representing a scene in motion. For example, a series of sequential images may be captured continuously or later reconstructed to produce animation. Video content may be presented in various formats including, but not limited to, analog, digital, two-dimensional and three-dimensional video. Further, video content may include movies, video clips or any set of animated images to be displayed in sequence.
Video adjustment system 130 may analyze video content to determine whether one or more orientation changes are present in the video content. For example, the video adjustment system 130 may analyze orientation information associated with one or more video image frames. The orientation information may include, for example, a specific position and/or orientation of a recording device at the moment when a video image frame is/was captured. For example, a video recording device may include one or more sensors, such as gyroscopic sensors and/or accelerometers that measure orientation and/or position of the device. The video recording device may receive and store such measurements from the one or more sensors as metadata within corresponding video image frames. In another example, measurements such as position and/or orientation data that are associated with one or more video image frames may be stored apart from the video image frames and may be associated/referenced at a later time.
In one embodiment, video adjustment system 130 may determine whether a series of video image frames associated with a video uploaded by a client 102A-102N have been recorded from multiple orientations. Video adjustment system 130 also may perform automatic adjustment of video content to correct one or more changes in video image frame orientation occurring throughout a video.
In an embodiment, web server 120 provides a web application to clients 102A-102N, which may reside on one or more server machines 110. The web application may include a graphical user interface configured to allow users to upload, display and manage video content. The web application also may include or utilize a video adjustment system 130. In one embodiment, the video adjustment system 130 may analyze video content during an upload process automatically based on one or more of a system setting, user preference, user request, or default. Video content analysis also may be performed by video adjustment system 130, for example, based on a user request received after the video content has been uploaded to a data store 140. A user may initiate a request, for example, using one or more commands (e.g., voice, text, motion) or by performing one or more actions/interactions with the graphical user interface (e.g., button click, keyboard shortcut).
In one embodiment, video adjustment system 130 determines that video content has been recorded in multiple orientations and provides a corresponding indication to a user (e.g., content owner, content administrator, content viewer). The web application may notify the user about the condition using a graphical user interface. For example, the web application may display a message or alert, update a label, redirect or refresh the interface, and/or provide one or more additional selectable controls (e.g., preview video orientation correction button, perform video orientation correction button).
In an embodiment, the graphical user interface is configured to allow a user to initiate video orientation correction, preview a full or sample version of adjusted video content with a proposed correction, save adjusted video content, and replace existing video content with adjusted video content. The graphical user interface also may be further configured to allow a user to preview adjusted/corrected video content (e.g., sample clip, full-version) with corresponding original video content. For example, adjusted video content may be played simultaneously and alongside original video content to allow side-by-side comparison. In one embodiment, a full or sample version of adjusted video content having a proposed corrected orientation is automatically generated and available for preview upon user request.
FIG. 2 is a block diagram of a video adjustment system 130, in accordance with an embodiment of the present disclosure. The video adjustment system 130 includes a video receiving module 202, a video analysis module 204, a video orientation determination module 206, a video adjustment module 208, and a video delivery module 210. In other embodiments, functionality associated with one or more of video receiving module 202, video analysis module 204, video orientation determination module 206, video adjustment module 208, and video delivery module 210 may be combined, divided and organized in various arrangements.
In an embodiment, video adjustment system 130 is coupled to data store 140 and working data store 240. Data store 140 includes video data 220 and image data 230. Working data store 240 includes temporary video data 250 and temporary image data 260.
Video data 220 generally refers to any type of moving image, which includes, but is not limited to movie films, videos, digital videos and other forms of animated drawings or display. For example, video data 220 may include digital videos having a sequence of static image frames that may be stored as image data 230. Thus, each image frame may represent a snapshot of a scene that has been captured according to a time interval.
Video data 220 may include computer animations, including two-dimensional and three-dimensional graphics. Video data 220 also may include any sequence of images, including graphical drawings that create an illusion of movement.
Image data 230 generally refers to any projection of real space through a lens onto a camera sensor. Image data 230 includes, but is not limited to, any type of two-dimensional image, three-dimensional image, video content and/or drawing.
In an embodiment, video adjustment system 130 utilizes working data store 240 as temporary storage space to perform adjusting of video data 220 and image data 230. Working data store 240 may include, for example, any type or combination of volatile and non-volatile storage (e.g., disk, memory).
In one embodiment, working data store 240 contains temporary video data 250 and temporary image data 260. For example, temporary video data 250 may include one or more copies of video data 220, such as original and modified/adjusted versions. Further, temporary image data 260 may include one or more copies of image data 230, such as original and modified/adjusted video image frames.
Working data store 240 also may include temporary data and results produced by video adjustment system 130. For example, working data store 240 may include original video content, original video image frames, corrected video image frames, and adjusted video content.
Further, video adjustment system 130 may use working data store 240, for example, to perform adjustment calculations, to persist intermediate processing results, and to provide adjusted video content having corrected video orientation to users.
Video receiving module 202 receives video content from one or more sources. For example, video receiving module may receive video content that includes a plurality of video image frames on a server machine 110 or a client device 102A-102N, such as a camera or a smartphone. In one example, video receiving module 202 receives video content that has been recorded and stored directly on the same computing device. In another example, video receiving module 202 receives video content from another source, such as an external video recording device, a different client 102A-102N, or a server machine 110.
In an embodiment, video analysis module 204 analyzes video data 220 and/or image data 230 to determine when a series of video image frames associated with video content have been recorded from one or more different orientations. For example, visual analysis module 204 may read and compare positional and/or orientation-based metadata associated with one or more video image frames. The video analysis module 204 may, for example, compare position and/or orientation metadata between and/or across multiple video image frames to determine whether orientation changes, shaking, and/or movement occur in the video content.
In one embodiment, video analysis module 204 detects a change in video orientation based on a threshold. For example, a threshold may be defined to specify a degree of rotation between two or more video image frames that will be considered an orientation change. The threshold may be provided, for example, as a user preference, system setting or default value.
Video orientation determination module 206 determines a standard orientation for the video content. In one embodiment, an original orientation of a video may be determined as the standard orientation. The standard orientation for a video also may be determined based on the most common orientation detected throughout the video, a user preference, a user selection, or orientation and/or size of a display device/video player where the video is to be displayed.
Video adjustment module 208 performs adjustment and resizing of one or more video image frames in a video. For example, video adjustment module 208 may calculate a degree of rotation required to adjust a video image frame from a non-standard orientation to the standard orientation determined for a video. The degree of rotation may be calculated, for example, based on the difference between orientation of a video image frame and the standard orientation. The video adjustment module 208 then may adjust the video image frame to the standard orientation based on the calculated degree of rotation. In addition, video adjustment module 208 also may resize video image frames. For example, video adjustment module may extend resolution of video image frames and/or crop video image frames to provide a uniform video image display size throughout an adjusted video.
Video delivery module 210 generates an adjusted video in the standard orientation. In an embodiment, video delivery module 210 generates an adjusted video in the standard orientation using a set of adjusted video frames received from video adjustment module 208. Video delivery module 210 then may provide the adjusted video in the standard orientation to a user for display.
FIG. 3 is a flow diagram illustrating automatic adjustment of video orientation, according to an embodiment. The method 300 is performed by processing logic that may comprise hardware (circuitry, dedicated logic, etc.), software (such as is run on a general purpose computer system or a dedicated machine), or a combination of both. In one embodiment, the method 300 is performed by the server machine 110 of FIG. 1. The method 300 may be performed by video adjustment system 130 running on server machine 110 or one or more other computing devices.
Method 300 begins at stage 302, when video content is received. In an embodiment, video receiving module 202 receives video content that includes a plurality of video image frames. For example, video receiving module 202 may receive video content that has been recorded and stored on the same computing device. In another embodiment, video receiving module 202 may receive video content from another source, such as a different computer system.
At stage 304, an orientation change occurring in the video content is detected. In an embodiment, video analysis module 204 analyzes video image frames from video content received at stage 302. For example, video analysis module may analyze position and/or orientation metadata stored within video image frames to determine when an orientation change has occurred in a video.
For example, a video recording device may include and continuously monitor device sensors, such as one or more gyroscopes, as video content is recorded. The video recording device then may store positional and/or orientation information received from one or more of the sensors in video image frames as metadata. In one embodiment, position and/or orientation data is captured continuously by a video recording device and stored in each respective video image frame as metadata. In another embodiment, only changes to position and/or orientation data are captured in the video image frames as metadata when the changes occur during video recordation.
In one embodiment, orientation data stored in one or more image frames may be compared to determine whether an orientation change has occurred in a video. For example, an orientation change may be detected when a single or cumulative difference in orientation between two or more video image frames exceeds one or more defined thresholds.
In another embodiment, orientation and/or position data associated with one or more video image frames may be compared to detect and correct shaking and/or other unintended or disruptive movement that occurs during a recorded video. In one example, orientation and/or position data associated with one or more video image frames is used to establish a baseline alignment (e.g, a standard orientation or another standard position). Video image frames that deviate from the established baseline alignment may be adjusted to the determined baseline alignment to correct shaking and/or other unintended or disruptive movement occurring across video image frames.
At stage 306 a standard orientation for displaying the video content is determined. In an embodiment, a standard orientation is a single, fixed orientation used to display video content. For example, a standard orientation may be determined based on the original orientation of a video, the most common orientation detected throughout a video, a user preferred playback orientation, a user selected orientation, orientation of a device or video player where video content is to be displayed, and/or one or more attributes of a video player that will display the video content (e.g., video player height, width, screen position, orientation, is fixed, is modifiable, etc.).
At stage 308, the video content is adjusted to the standard orientation. In an embodiment, video adjustment module 208 performs adjustment and resizing of one or more video image frames in a video. For example, video adjustment module 208 may calculate a degree of rotation required to adjust a video image frame from its original orientation to the standard orientation. Video adjustment module 208 also may resize video content to a standard display resolution.
In an embodiment, video adjustment module 208 determines a degree of rotation required to adjust a video image frame to the standard orientation. In one example, video adjustment module 208 calculates the difference between orientation of a recorded video frame and the standard orientation determined for a video. Video orientation module 208 then may adjust the video frame based on the determination to correct the variation.
In addition, video adjustment module 208 also may resize video image frames. For example, video adjustment module 208 may crop video image frames to provide a standard display size for an adjusted video and/or to fit a portion of a video image into a different orientation or playback window.
In an embodiment, video adjustment module 208 calculates a standard display size for a video based on the shortest sides of all video image frames. For example, a video with a landscape orientation resolution of 3000×2000 and a portrait orientation resolution of 2000×3000 would have a standard display size of 2000×2000. Thus, the middle 2000×2000 square regions of both 2000×3000 portrait orientation video image frames and 3000×2000 landscape orientation video image frames may be adjusted to a standard orientation and displayed together at a common display size of 2000×2000.
In one example, each 2000×3000 portrait orientation video image frame is cropped so that the middle 2000×2000 region is retained. The cropped portrait orientation video image frame then may be rotated, centered, and displayed with 3000×2000 landscape video frames in an adjusted video.
In another example, the middle 2000×2000 square of a 3000×2000 landscape orientation video image frame may be rotated, centered, and displayed with 2000×3000 portrait orientation video frames in an adjusted video.
In another embodiment, a video with an original 3000×2000 landscape orientation resolution may be rotated to a 2000×3000 portrait orientation resolution. Further, 2000×3000 portrait orientation video image frames in the video then may be rotated to match the orientation of the adjusted landscape image frames and resized to a 1500×2000 area to keep the aspect ratio.
FIG. 4 is a flow diagram illustrating additional aspects of automatic adjustment of video content, according to an embodiment. The method 400 is performed by processing logic that may comprise hardware (circuitry, dedicated logic, etc.), software (such as is run on a general purpose computer system or a dedicated machine), or a combination of both.
At stage 402, video content is received. According to an embodiment, video content may be received or assembled from one or more sources. For example, video content may arrive as a single video file having a set of sequential image frames. Additionally, a video file may be assembled and/or created from two or more images having a sequential ordering or relationship. Stage 402 may be performed by, for example, video receiving module 202.
At stage 404, an orientation change and/or an alignment change (i.e., shaking or video image movement) is detected in the video content. In an embodiment, orientation and/or position data from two or more video image frames is analyzed and compared to determine when an orientation change and/or alignment change occurs in a video. In one example, an orientation change and/or an alignment change may be detected in a video when a change in orientation and/or position data between two or more video image frames exceeds a threshold. Stage 404 may be performed by, for example, video analysis module 204.
At stage 406, a user is notified of the detected orientation change and/or alignment change in the video content. In one embodiment, a user may receive a notification of a detected orientation change and/or alignment change on a device where the video content has been recorded. In another embodiment, a user may receive a notification from a video sharing or social networking website where the user has uploaded the video content. The notification provided to the user may indicate that camera rotation was detected in the video. In addition, the user may be provided with one or more of an option to preview the video, to preview one or more detected changes in orientation or alignment, and to automatically correct one or more detected orientation or alignment changes in the video. Further, the user may be prompted to select a standard orientation and/or baseline alignment for displaying the video. Stage 406 may be performed by, for example, video orientation determination module 206.
At stage 408, a standard orientation and/or baseline alignment to use for displaying the video content is determined based on user feedback. In one example, a standard orientation and/or baseline alignment are received based on user input that has been received. For example, a user may select a standard orientation and/or baseline alignment after being notified of a detected change in orientation and/or alignment in video content. The user also may select a standard orientation and/or baseline alignment after viewing a preview of the detected changes and/or other portions of the video content.
In other embodiments a standard orientation may be determined based on the original orientation and/or alignment of a video, the most common orientation or alignment detected throughout a video, a user preferred playback orientation, a user selected orientation/alignment, or orientation of a device or video player where video content is to be displayed. In an embodiment, adjustment of video content may be initiated automatically by video adjustment system 130, based on input received from a user, or based on a combination of both system and user input. Stage 408 may be performed by, for example, video orientation determination module 208.
At stage 410, the video content is adjusted to the standard orientation and/or baseline alignment by modifying one or more of the video image frames. In an embodiment, one or more of the image frames may be adjusted by rotating the image frames from a non-standard orientation to the standard orientation determined at stage 408. Further, one or more of the images frames also may be resized based on a standard video display size determined for an adjusted video.
In one embodiment, video image frames are resized by extending resolution of the video image frames to a square of the longest sides of the video. For example, a video with a landscape resolution of 3000×2000 and a portrait resolution of 2000×3000 may be extended to 3000×3000. Thus, the video image frames may be rotated to the standard orientation and displayed together in an adjusted video without losing content. Stage 410 may be performed by, for example, video adjustment module 208.
At stage 412, the adjusted video is provided to the user in the standard orientation and/or baseline alignment. The adjusted video may be generated based on the image frames that have been adjusted to a standard orientation and/or baseline alignment. The adjusted video content then may be presented to a user for preview or full display.
In an alternative embodiment, a video player or a video-playing website may not resize video image frames. Instead, the video image frames may be rotated to a standard orientation and displayed in an original size. For example, landscape video image frames of 600×400 may be displayed in their original size in a standard orientation. Portrait image frames of 400×600 then may be displayed in their original size in a standard orientation by resizing the video player area (and vice versa). In one example, content such as text surrounding the video player/video-playing area may be repositioned automatically one or more times when the video player area is automatically resized. Stage 412 may be performed by, for example, by video delivery module 210.
FIG. 5 illustrates a diagram of a machine in the exemplary form of a computer system 500 within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed. In alternative embodiments, the machine may be connected (e.g., networked) to other machines in a LAN, an intranet, an extranet, or the Internet. The machine may operate in the capacity of a server or a client machine in client-server network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine may be a personal computer (PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), a cellular telephone, a web appliance, a server, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
The exemplary computer system 500 includes a processing device (processor) 502, a main memory 504 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM), double data rate (DDR SDRAM), or DRAM (RDRAM), etc.), a static memory 506 (e.g., flash memory, static random access memory (SRAM), etc.), and a data storage device 518, which communicate with each other via a bus 530.
Processor 502 represents one or more general-purpose processing devices such as a microprocessor, central processing unit, or the like. More particularly, the processor 502 may be a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets or processors implementing a combination of instruction sets. The processor 502 may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), a network processor, or the like. The processor 502 is configured to execute instructions 522 for performing the operations and steps discussed herein.
The computer system 500 may further include a network interface device 508. The computer system 500 also may include a video display unit 510 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device 512 (e.g., a keyboard), a cursor control device 514 (e.g., a mouse), and a signal generation device 516 (e.g., a speaker).
The data storage device 518 may include a computer-readable storage medium 528 on which is stored one or more sets of instructions 522 (e.g., software) embodying any one or more of the methodologies or functions described herein. The instructions 522 may also reside, completely or at least partially, within the main memory 504 and/or within the processor 502 during execution thereof by the computer system 500, the main memory 504 and the processor 502 also constituting computer-readable storage media. The instructions 522 may further be transmitted or received over a network 520 via the network interface device 508.
In one embodiment, the instructions 522 include instructions for a video adjustment module (e.g., video adjustment system 130 of FIG. 1) and/or a software library containing methods that call a video adjustment module. While the computer-readable storage medium 528 (machine-readable storage medium) is shown in an exemplary embodiment to be a single medium, the term “computer-readable storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. The term “computer-readable storage medium” shall also be taken to include any medium that is capable of storing, encoding or carrying a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present disclosure. The term “computer-readable storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical media, and magnetic media.
In the foregoing description, numerous details are set forth. It will be apparent, however, to one of ordinary skill in the art having the benefit of this disclosure, that the present disclosure may be practiced without these specific details. In some instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring the present disclosure.
Some portions of the detailed description have been presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “computing”, “comparing”, “applying”, “creating”, “ranking”, “classifying”, or the like, refer to the actions and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (e.g., electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
Certain embodiments of the present disclosure also relate to an apparatus for performing the operations herein. This apparatus may be constructed for the intended purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions.
It is to be understood that the above description is intended to be illustrative, and not restrictive. Many other embodiments will be apparent to those of skill in the art upon reading and understanding the above description. The scope of the disclosure should, therefore, be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.

Claims (18)

What is claimed is:
1. A computer-implemented method comprising:
receiving, by a video sharing service, a video recorded by a video recording device of a mobile device of a user, the video comprising a plurality of image frames;
determining, by a processor of the video sharing service, that an orientation change and shaking of the mobile device have occurred during recording of the video, wherein the orientation change and shaking are determined for the video based on data stored by the video recording device in each of the plurality of image frames of the video, the data comprising orientation information of a corresponding image frame of the video and position information of the corresponding image frame of the video, the position information being indicative of shaking;
notifying, by the processor, the user of the orientation change and shaking of the mobile device during the recording of the video;
determining, by the processor, a standard orientation and a baseline alignment for the video, the standard orientation being determined based on a most common orientation detected throughout the video, and one or more parameters of a video player to present the video;
adjusting, by the processor, the video to the standard orientation and the baseline alignment, wherein the adjusting comprises:
automatically resizing one or more of the plurality of image frames in the video based on the standard orientation;
automatically rotating one or more of the plurality of image frames in the video to the standard orientation; and
automatically adjusting one or more of the plurality of image frames in the video to the baseline alignment to correct shaking; and
providing, by the processor, a user interface comprising the video player to present a preview of the adjusted video in the standard orientation and baseline alignment to the user on the mobile device.
2. The computer-implemented method of claim 1, wherein determining that the orientation change and shaking of the mobile device have occurred during recording of the video comprises:
comparing, by the processor, a video recording device position associated with a first image frame in the video to a second video recording device position associated with a second image frame in the video.
3. The computer-implemented method of claim 1, wherein adjusting the video to the standard orientation further comprises:
determining a degree of rotation required to adjust the image frame to the standard orientation.
4. The computer-implemented method of claim 1, wherein automatically resizing comprises cropping one or more of the image frames.
5. The computer-implemented method of claim 1, wherein automatically resizing comprises extending display resolution of one or more of the image frames.
6. The computer-implemented method of claim 5, wherein extending display resolution of one or more of the image frames comprises:
defining a square of longest sides of the video based on a landscape orientation of the video and a portrait orientation of the video; and
extending resolution of image frames to the square of the longest sides of the video.
7. The computer-implemented method of claim 5, wherein the resizing comprises:
calculating a standard display size for the video using shortest sides of the video; and
cropping portions of the one or more of the plurality of image frames that extend beyond the calculated display size.
8. The computer-implemented method of claim 1, further comprising:
providing an interface to allow the user to adjust the video to the standard orientation.
9. The computer-implemented method of claim 1, wherein the standard orientation is further determined based on an original orientation of the video.
10. The computer-implemented method of claim 1, wherein the standard orientation is further determined based on a stored user preference.
11. The computer-implemented method of claim 1, wherein the standard orientation is further determined based on a user selection.
12. The computer-implemented method of 1, wherein the one or more parameters of the video player comprises at least one of an orientation of the video player, a size of the video player, an orientation of a display device providing the video player, or a size of the display device.
13. A non-transitory computer readable medium having instructions stored thereon, that when executed by a processor, cause the processor to perform operations comprising:
receiving, by a video sharing service, a video recorded by a video recording device of a mobile device of a user, the video comprising a plurality of image frames;
determining, by the processor of the video sharing service, that an orientation change and shaking of the mobile device have occurred during recording of the video, wherein the orientation change and shaking are determined for the video based on data stored by the video recording device in each of the plurality of image frames of the video, the data comprising orientation information of a corresponding image frame of the video and position information of the corresponding image frame of the video, the position information being indicative of shaking;
notifying, by the processor, the user of the orientation change and shaking of the mobile device during the recording of the video;
determining, by the processor, a standard orientation and a baseline alignment for the video, the standard orientation being determined based on a most common orientation detected throughout the video, and one or more parameters of a video player to present the video;
adjusting, by the processor, the video to the standard orientation and the baseline alignment, wherein the adjusting comprises:
automatically resizing one or more of the plurality of image frames in the video based on the standard orientation;
automatically rotating one or more of the plurality of image frames in the video to the standard orientation; and
automatically adjusting one or more of the plurality of image frames in the video to the baseline alignment to correct shaking; and
providing, by the processor, a user interface comprising the video player to present a preview of the adjusted video in the standard orientation and baseline alignment to the user on the mobile device.
14. The computer readable medium of claim 13, wherein determining that the orientation change and shaking of the mobile device have occurred during recording of the video comprises:
comparing, by the processor, a video recording device position associated with a first image frame in the video to a second video recording device position associated with a second image frame in the video.
15. The computer readable medium of claim 13, wherein adjusting the video to the standard orientation comprises:
determining a degree of rotation required to adjust the image frame to the standard orientation.
16. A system, comprising:
a memory; and
a processor coupled to the memory to:
receive a video recorded by a video recording device of a mobile device of a user, the video comprising a plurality of image frames;
determine that an orientation change and shaking of the mobile device have occurred during recording of the video, wherein the orientation change and shaking are determined for the video based on data stored by the video recording device in each of the plurality of image frames of the video, the data comprising orientation information of a corresponding image frame of the video and position information of the corresponding image frame of the video, the position information being indicative of shaking;
notify the user of the orientation change and shaking of the mobile device during the recording of the video;
determine a standard orientation and a baseline alignment for the video, the standard orientation being determined based on a most common orientation detected throughout the video, and one or more parameters of a video player to present the video;
adjust the video to the standard orientation and the baseline alignment, wherein the adjusting comprises:
automatically resizing one or more of the plurality of image frames in the video based on the standard orientation;
automatically rotating one or more of the plurality of image frames in the video to the standard orientation; and
automatically adjusting one or more of the plurality of image frames in the video to the baseline alignment to correct shaking; and
provide a user interface comprising the video player to present a preview of the adjusted video in the standard orientation and baseline alignment to the user on the mobile device.
17. The system of claim 16, wherein to determine that the orientation change and shaking of the mobile device have occurred during recording of the video, the processor is to:
compare a video recording device position associated with a first image frame in the video to a second video recording device position associated with a second image frame in the video.
18. The system of claim 16, wherein to adjust the video to the standard orientation, the processor is to:
determine a degree of rotation required to adjust the image frame to the standard orientation.
US13/838,686 2013-03-15 2013-03-15 Automatic adjustment of video orientation Active 2033-09-29 US9762848B2 (en)

Priority Applications (9)

Application Number Priority Date Filing Date Title
US13/838,686 US9762848B2 (en) 2013-03-15 2013-03-15 Automatic adjustment of video orientation
CN201480016187.2A CN105247850A (en) 2013-03-15 2014-03-14 Automatic adjustment of video orientation
CN202110541522.2A CN113438511B (en) 2013-03-15 2014-03-14 Method, medium and system for automatic adjustment of video direction
JP2016503148A JP6563896B2 (en) 2013-03-15 2014-03-14 Automatic adjustment of image direction
EP20172528.0A EP3726829A1 (en) 2013-03-15 2014-03-14 Automatic adjustment of video orientation
EP14723197.1A EP2974272B1 (en) 2013-03-15 2014-03-14 Automatic adjustment of video orientation
PCT/US2014/029579 WO2014144959A1 (en) 2013-03-15 2014-03-14 Automatic adjustment of video orientation
US15/701,403 US10469797B2 (en) 2013-03-15 2017-09-11 Automatic adjustment of video orientation
US16/673,923 US10887543B2 (en) 2013-03-15 2019-11-04 Automatic adjustment of video orientation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/838,686 US9762848B2 (en) 2013-03-15 2013-03-15 Automatic adjustment of video orientation

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US15/701,403 Continuation US10469797B2 (en) 2013-03-15 2017-09-11 Automatic adjustment of video orientation

Publications (2)

Publication Number Publication Date
US20140267901A1 US20140267901A1 (en) 2014-09-18
US9762848B2 true US9762848B2 (en) 2017-09-12

Family

ID=50687655

Family Applications (3)

Application Number Title Priority Date Filing Date
US13/838,686 Active 2033-09-29 US9762848B2 (en) 2013-03-15 2013-03-15 Automatic adjustment of video orientation
US15/701,403 Active US10469797B2 (en) 2013-03-15 2017-09-11 Automatic adjustment of video orientation
US16/673,923 Active US10887543B2 (en) 2013-03-15 2019-11-04 Automatic adjustment of video orientation

Family Applications After (2)

Application Number Title Priority Date Filing Date
US15/701,403 Active US10469797B2 (en) 2013-03-15 2017-09-11 Automatic adjustment of video orientation
US16/673,923 Active US10887543B2 (en) 2013-03-15 2019-11-04 Automatic adjustment of video orientation

Country Status (5)

Country Link
US (3) US9762848B2 (en)
EP (2) EP3726829A1 (en)
JP (1) JP6563896B2 (en)
CN (2) CN113438511B (en)
WO (1) WO2014144959A1 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180039820A1 (en) * 2016-08-03 2018-02-08 At&T Intellectual Property I, L.P. Method and system for aggregating video content
US10475483B2 (en) 2017-05-16 2019-11-12 Snap Inc. Method and system for recording and playing video using orientation of device
US10623662B2 (en) 2016-07-01 2020-04-14 Snap Inc. Processing and formatting video for interactive presentation
US10622023B2 (en) 2016-07-01 2020-04-14 Snap Inc. Processing and formatting video for interactive presentation
US11178085B2 (en) * 2019-02-27 2021-11-16 A Social Company Social media platform for sharing reactions to videos
US11876765B2 (en) 2019-02-27 2024-01-16 A Social Company Social contract based messaging platform

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160149956A1 (en) * 2014-11-21 2016-05-26 Whip Networks, Inc. Media management and sharing system
US9800778B2 (en) 2015-07-21 2017-10-24 Qualcomm Incorporated Camera orientation notification system
KR102453083B1 (en) * 2016-07-01 2022-10-11 스냅 인코포레이티드 Processing and formatting video for interactive presentation
CN107733874B (en) * 2017-09-20 2021-03-30 平安科技(深圳)有限公司 Information processing method, information processing device, computer equipment and storage medium
WO2019112642A1 (en) * 2017-12-05 2019-06-13 Google Llc Method for converting landscape video to portrait mobile layout using a selection interface
CN109348139A (en) * 2018-10-19 2019-02-15 北京凯视达科技有限公司 Video rotation method, device, computer readable storage medium and electronic equipment
US11178374B2 (en) 2019-05-31 2021-11-16 Adobe Inc. Dynamically rendering 360-degree videos using view-specific-filter parameters
US10983363B2 (en) 2019-09-19 2021-04-20 Fotonation Limited Method for stabilizing a camera frame of a video sequence

Citations (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6292215B1 (en) 1995-01-31 2001-09-18 Transcenic L.L.C. Apparatus for referencing and sorting images in a three-dimensional system
US20030099395A1 (en) 2001-11-27 2003-05-29 Yongmei Wang Automatic image orientation detection based on classification of low-level image features
EP1500045A1 (en) 2002-04-16 2005-01-26 Koninklijke Philips Electronics N.V. Image rotation correction for video or photographic equipment
US20050093891A1 (en) 2003-11-04 2005-05-05 Pixel Instruments Corporation Image orientation apparatus and method
US20050212931A1 (en) 2000-03-27 2005-09-29 Eastman Kodak Company Digital camera which estimates and corrects small camera rotations
KR20070070848A (en) 2005-12-29 2007-07-04 주식회사 팬택 Method and system for providing rotation compensation of video data transmitted to mobile communication terminal
US20090034866A1 (en) * 2007-08-02 2009-02-05 Min-Kyu Park Method of removing blur without ringing-artifact
US20090046204A1 (en) * 2007-08-17 2009-02-19 Samsung Electronics Co., Ltd. Video processing apparatus and video processing method thereof
US7656428B2 (en) 2005-05-05 2010-02-02 Avago Technologies General Ip (Singapore) Pte. Ltd. Imaging device employing optical motion sensor as gyroscope
EP2160019A1 (en) 2007-06-27 2010-03-03 Panasonic Corporation Imaging apparatus, method, system integrated circuit, and program
US20100103311A1 (en) * 2007-06-06 2010-04-29 Sony Corporation Image processing device, image processing method, and image processing program
US20110032384A1 (en) * 2009-08-06 2011-02-10 Canon Kabushiki Kaisha Display apparatus
US20110228098A1 (en) 2010-02-10 2011-09-22 Brian Lamb Automatic motion tracking, event detection and video image capture and tagging
US20120140092A1 (en) 2010-12-02 2012-06-07 Bby Solutions, Inc. Video rotation system and method
US20120206565A1 (en) 2011-02-10 2012-08-16 Jason Villmer Omni-directional camera and related viewing software
US8259184B2 (en) 2006-02-14 2012-09-04 Sony Corporation Imaging apparatus with shake correction
US20120236029A1 (en) 2011-03-02 2012-09-20 Benjamin Zeis Newhouse System and method for embedding and viewing media files within a virtual and augmented reality scene
US8289401B2 (en) 2004-07-21 2012-10-16 Csr Technology Inc. Processing of video data to compensate for unintended camera motion between acquired image frames
US20130136379A1 (en) * 2011-11-28 2013-05-30 Ati Technologies Ulc Method and apparatus for correcting rotation of video frames
US20130207999A1 (en) * 2010-10-04 2013-08-15 Nec Casio Mobile Communications Ltd. Image display device, image list display method
US20140146205A1 (en) * 2012-11-27 2014-05-29 Qualcomm Incorporated System and method for adjusting orientation of captured video
US20140267806A1 (en) * 2013-03-12 2014-09-18 Sony Corporation Device and method for processing video content
US20160006930A1 (en) * 2013-03-08 2016-01-07 Thomson Licensing Method And System For Stabilization And Reframing

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0611125B1 (en) * 1993-02-12 2000-11-22 Sony Corporation Electronic zoom control and image stabilization
US6297185B1 (en) * 1998-02-23 2001-10-02 T/J Technologies, Inc. Catalyst
DE19909627A1 (en) * 1999-03-05 2000-09-07 Bosch Gmbh Robert Method and device for determining a shift of images of an image sequence
JP2002158959A (en) * 2000-11-16 2002-05-31 Seiko Epson Corp Picture data preservation format converting method and recording medium with picture data preservation format conversion processing program recorded and camera
US7071970B2 (en) * 2003-03-10 2006-07-04 Charles Benton Video augmented orientation sensor
US7327873B2 (en) * 2003-06-06 2008-02-05 Intel Corporation Fast software rotation of video for portrait mode displays
JP2005229394A (en) * 2004-02-13 2005-08-25 Canon Inc Image photographing apparatus, image distribution method for image photographing apparatus, image distribution system, and program
JP2006054698A (en) * 2004-08-12 2006-02-23 Canon Inc Imaging apparatus having camera shake correction function
JP4390274B2 (en) * 2004-12-27 2009-12-24 キヤノン株式会社 Imaging apparatus and control method
JP4179279B2 (en) * 2004-12-28 2008-11-12 セイコーエプソン株式会社 IMAGING DEVICE AND MOBILE DEVICE AND MOBILE PHONE HAVING THE SAME
JP4687420B2 (en) * 2005-11-25 2011-05-25 セイコーエプソン株式会社 Imaging apparatus, imaging method, and program
CN1979322A (en) * 2005-12-02 2007-06-13 上海乐金广电电子有限公司 Camera image regulation system using acceleration sensor and method therefor
JP4457358B2 (en) * 2006-05-12 2010-04-28 富士フイルム株式会社 Display method of face detection frame, display method of character information, and imaging apparatus
JP5354244B2 (en) * 2007-05-07 2013-11-27 ソニー株式会社 Data management apparatus, data management method, and program
JP2009033223A (en) * 2007-07-24 2009-02-12 Fujifilm Corp Imaging apparatus
JP4985201B2 (en) * 2007-08-07 2012-07-25 ソニー株式会社 Electronic device, motion vector detection method and program
WO2009054333A1 (en) * 2007-10-23 2009-04-30 Sony Corporation Video reproduction device and video reproduction method
KR101041366B1 (en) * 2007-11-02 2011-06-14 주식회사 코아로직 Apparatus for digital image stabilizing using object tracking and Method thereof
JP2010016548A (en) * 2008-07-02 2010-01-21 Canon Inc Moving image processing apparatus
JP4640470B2 (en) * 2008-08-18 2011-03-02 ソニー株式会社 Image processing apparatus, image processing method, program, and imaging apparatus
US8713215B2 (en) * 2009-05-29 2014-04-29 Z Microsystems, Inc. Systems and methods for image stream processing
CN101930302B (en) * 2009-06-19 2013-02-20 宏碁股份有限公司 Electronic device with sway compensating function and object display method thereof
JP5410908B2 (en) * 2009-09-30 2014-02-05 富士フイルム株式会社 Imaging device
KR20110091378A (en) * 2010-02-05 2011-08-11 삼성전자주식회사 Method and apparatus for processing and producing camera video
JP2011175128A (en) * 2010-02-25 2011-09-08 Panasonic Corp Camera system and camera body
US20110243532A1 (en) * 2010-03-31 2011-10-06 Motorola, Inc. System and method of video stabilization during movement
JP2011259342A (en) * 2010-06-11 2011-12-22 Panasonic Corp Image processing apparatus and image processing method
JP2012124939A (en) * 2012-02-07 2012-06-28 Canon Inc Imaging apparatus and imaging apparatus control method
KR101978214B1 (en) * 2012-11-19 2019-05-14 엘지전자 주식회사 Display device for displaying video and method thereof

Patent Citations (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6292215B1 (en) 1995-01-31 2001-09-18 Transcenic L.L.C. Apparatus for referencing and sorting images in a three-dimensional system
US20050212931A1 (en) 2000-03-27 2005-09-29 Eastman Kodak Company Digital camera which estimates and corrects small camera rotations
US20030099395A1 (en) 2001-11-27 2003-05-29 Yongmei Wang Automatic image orientation detection based on classification of low-level image features
EP1500045A1 (en) 2002-04-16 2005-01-26 Koninklijke Philips Electronics N.V. Image rotation correction for video or photographic equipment
US20050093891A1 (en) 2003-11-04 2005-05-05 Pixel Instruments Corporation Image orientation apparatus and method
US8289401B2 (en) 2004-07-21 2012-10-16 Csr Technology Inc. Processing of video data to compensate for unintended camera motion between acquired image frames
US7656428B2 (en) 2005-05-05 2010-02-02 Avago Technologies General Ip (Singapore) Pte. Ltd. Imaging device employing optical motion sensor as gyroscope
KR20070070848A (en) 2005-12-29 2007-07-04 주식회사 팬택 Method and system for providing rotation compensation of video data transmitted to mobile communication terminal
US8259184B2 (en) 2006-02-14 2012-09-04 Sony Corporation Imaging apparatus with shake correction
US20100103311A1 (en) * 2007-06-06 2010-04-29 Sony Corporation Image processing device, image processing method, and image processing program
EP2160019A1 (en) 2007-06-27 2010-03-03 Panasonic Corporation Imaging apparatus, method, system integrated circuit, and program
US20090034866A1 (en) * 2007-08-02 2009-02-05 Min-Kyu Park Method of removing blur without ringing-artifact
US20090046204A1 (en) * 2007-08-17 2009-02-19 Samsung Electronics Co., Ltd. Video processing apparatus and video processing method thereof
US20110032384A1 (en) * 2009-08-06 2011-02-10 Canon Kabushiki Kaisha Display apparatus
US20110228098A1 (en) 2010-02-10 2011-09-22 Brian Lamb Automatic motion tracking, event detection and video image capture and tagging
US20130207999A1 (en) * 2010-10-04 2013-08-15 Nec Casio Mobile Communications Ltd. Image display device, image list display method
US20120140092A1 (en) 2010-12-02 2012-06-07 Bby Solutions, Inc. Video rotation system and method
US20120206565A1 (en) 2011-02-10 2012-08-16 Jason Villmer Omni-directional camera and related viewing software
US20120236029A1 (en) 2011-03-02 2012-09-20 Benjamin Zeis Newhouse System and method for embedding and viewing media files within a virtual and augmented reality scene
US20130136379A1 (en) * 2011-11-28 2013-05-30 Ati Technologies Ulc Method and apparatus for correcting rotation of video frames
WO2013078539A1 (en) 2011-11-28 2013-06-06 Ati Technologies Ulc Method and apparatus for correcting rotation of video frames
US20140146205A1 (en) * 2012-11-27 2014-05-29 Qualcomm Incorporated System and method for adjusting orientation of captured video
US20160006930A1 (en) * 2013-03-08 2016-01-07 Thomson Licensing Method And System For Stabilization And Reframing
US20140267806A1 (en) * 2013-03-12 2014-09-18 Sony Corporation Device and method for processing video content

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Hanning, et al., "Stabilizing Cell Phone Video Using Inertial Measurement Sensors", 8 pages, http://www.liu.se/forskning/foass/per-erik-forssen/VGS, In Computer Vision Workshops (ICCV Workshops), 2011 IEEE International Conference on (pp. 1-8). IEEE.
International Searching Authority, "Notification of Transmittal of the International Search Report and the Written Opinion of the International Search Authority, or the Declaration," for International Application No. PCT/US2014/029579, mailed Jul. 17, 2014, 5 pages.
Karpenko et al., "Digital Video Stabilization and Rolling Shutter Correction Using Gyroscopes", 7 pages, Stanford Tech Report CTSR Mar. 2011.

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11081141B2 (en) 2016-07-01 2021-08-03 Snap Inc. Processing and formatting video for interactive presentation
US10622023B2 (en) 2016-07-01 2020-04-14 Snap Inc. Processing and formatting video for interactive presentation
US11159743B2 (en) 2016-07-01 2021-10-26 Snap Inc. Processing and formatting video for interactive presentation
US11557324B2 (en) 2016-07-01 2023-01-17 Snap Inc. Processing and formatting video for interactive presentation
US10623662B2 (en) 2016-07-01 2020-04-14 Snap Inc. Processing and formatting video for interactive presentation
US10325143B2 (en) 2016-08-03 2019-06-18 At&T Intellectual Property I, L.P. Method and system for aggregating video content
US10789452B2 (en) 2016-08-03 2020-09-29 At&T Intellectual Property I, L.P. Method and system for aggregating video content
US9916493B2 (en) * 2016-08-03 2018-03-13 At&T Intellectual Property I, L.P. Method and system for aggregating video content
US11462051B2 (en) 2016-08-03 2022-10-04 At&T Intellectual Property I, L.P. Method and system for aggregating video content
US20180039820A1 (en) * 2016-08-03 2018-02-08 At&T Intellectual Property I, L.P. Method and system for aggregating video content
US10803906B1 (en) 2017-05-16 2020-10-13 Snap Inc. Recording and playing video using orientation of device
US10475483B2 (en) 2017-05-16 2019-11-12 Snap Inc. Method and system for recording and playing video using orientation of device
US11521654B2 (en) 2017-05-16 2022-12-06 Snap Inc. Recording and playing video using orientation of device
US11943187B1 (en) 2019-02-27 2024-03-26 A Social Company Social media platform for sharing reactions to videos
US20220070124A1 (en) * 2019-02-27 2022-03-03 A Social Company Social media platform for sharing reactions to videos
US11178085B2 (en) * 2019-02-27 2021-11-16 A Social Company Social media platform for sharing reactions to videos
US11876765B2 (en) 2019-02-27 2024-01-16 A Social Company Social contract based messaging platform
US11888800B2 (en) * 2019-02-27 2024-01-30 A Social Company Social media platform for sharing reactions to videos

Also Published As

Publication number Publication date
EP2974272B1 (en) 2020-05-13
CN113438511A (en) 2021-09-24
US20140267901A1 (en) 2014-09-18
EP2974272A1 (en) 2016-01-20
JP2016516365A (en) 2016-06-02
CN113438511B (en) 2023-09-12
US20200068168A1 (en) 2020-02-27
JP6563896B2 (en) 2019-08-21
US10469797B2 (en) 2019-11-05
EP3726829A1 (en) 2020-10-21
US10887543B2 (en) 2021-01-05
CN105247850A (en) 2016-01-13
WO2014144959A1 (en) 2014-09-18
US20170374314A1 (en) 2017-12-28

Similar Documents

Publication Publication Date Title
US10887543B2 (en) Automatic adjustment of video orientation
US10628680B2 (en) Event-based image classification and scoring
AU2012352520B2 (en) Multiple-angle imagery of physical objects
US10514818B2 (en) System and method for grouping related photographs
US20150215532A1 (en) Panoramic image capture
US9646368B2 (en) Automatic color correction
US9445047B1 (en) Method and apparatus to determine focus of attention from video
US20230412788A1 (en) Systems and methods for stabilizing views of videos
US11726637B1 (en) Motion stills experience
US20230419997A1 (en) Automatic Non-Linear Editing Style Transfer
WO2023031890A1 (en) Context based adaptable video cropping

Legal Events

Date Code Title Description
AS Assignment

Owner name: GOOGLE INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:NOWAKOWSKI, MACIEK S.;SZABO, BALAZS;SIGNING DATES FROM 20130314 TO 20130315;REEL/FRAME:030056/0690

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: GOOGLE LLC, CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:GOOGLE INC.;REEL/FRAME:044097/0658

Effective date: 20170929

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 4