In implementation of techniques for generating video from an image based on variable speed, a computing device implements a variable speed system to receive a static digital image displayed in a user interface, an indication of a movement direction, and an indication of a variable rate of speed. The variable speed system generates a digital video based on the static digital image, the digital video having pixels that move in the movement direction at a speed that varies based on the variable rate of speed based on pixels from the static digital image. The variable speed system then displays the digital video in the user interface.
Legal claims defining the scope of protection, as filed with the USPTO.
identifying, by a processing device, a region of a static digital image to animate by identifying an object depicted in the static digital image using one or more machine learning models; determining, by the processing device, a movement direction for animating pixels of the region of the static digital image based on a type of the object using the one or more machine learning models; receiving, by the processing device, a selection of a rate of speed for animating the region of the static digital image; and generating, by the processing device, a digital video for presentation in a user interface that includes the pixels of the region corresponding to the object moving in the movement direction and according to the rate of speed, using the one or more machine learning models. . A method comprising:
claim 1 . The method of, further comprising displaying a preview of the digital video in the user interface in response to receiving an indication of a change to the selection of the rate of speed.
claim 1 . The method of, further comprising identifying static background pixels for the digital video based on pixels that are outside the region of the static digital image.
claim 1 . The method of, wherein the rate of speed is a variable rate of speed, and the pixels of the region move at one or more different speeds.
claim 1 . The method of, wherein the region of the static digital image is identified based on a uniform texture or pattern detected within the static digital image using the one or more machine learning models.
claim 1 . The method of, further comprising displaying a mask in the user interface over the region of the static digital image to indicate a portion to be animated.
claim 1 . The method of, wherein the rate of speed specifies one of speeding up or slowing down along a path of movement.
claim 1 . The method of, wherein the movement direction is one or multiple movement directions.
claim 1 . The method of, wherein the movement direction specifies curved motion.
identifying an object depicted in a static digital image using one or more machine learning models; determining a type of movement associated with the object; determining a movement direction for animating pixels of a region of the static digital image corresponding to the object based on the type of the movement associated with the object using the one or more machine learning models; receiving a selection of a rate of speed for animating the region of the static digital image; and generating a digital video for presentation in a user interface that includes the pixels of the region corresponding to the object moving in the movement direction and according to the rate of speed, using the one or more machine learning models. . A non-transitory computer-readable storage medium storing executable instructions, which when executed by a processing device, cause the processing device to perform operations comprising:
claim 10 . The non-transitory computer-readable storage medium of, further configured to perform operations comprising displaying a preview of the digital video in the user interface in response to receiving an indication of a change to the selection of the rate of speed.
claim 10 . The non-transitory computer-readable storage medium of, further configured to perform operations comprising identifying static background pixels for the digital video based on pixels that are outside the region of the static digital image.
claim 10 . The non-transitory computer-readable storage medium of, wherein the rate of speed is a variable rate of speed, and the pixels of the region move at one or more different speeds.
claim 10 . The non-transitory computer-readable storage medium of, wherein the region of the static digital image is identified based on a uniform texture or pattern detected within the static digital image using the one or more machine learning models.
claim 10 . The non-transitory computer-readable storage medium of, further configured to perform operations comprising displaying a mask in the user interface over the region of the static digital image to indicate a portion to be animated.
claim 10 . The non-transitory computer-readable storage medium of, wherein the rate of speed specifies one of speeding up or slowing down along a path of movement.
means for identifying a region of a static digital image to animate by identifying an object depicted in the static digital image using one or more machine learning models; means for determining a movement direction for animating pixels of the region of the static digital image based on a type of the object using the one or more machine learning models; means for receiving a selection of a rate of speed for animating the region of the static digital image; and means for generating a digital video for presentation in a user interface that includes the pixels of the region corresponding to the object moving in the movement direction and according to the rate of speed, using the one or more machine learning models. . A system comprising:
claim 17 . The system of, further comprising displaying a preview of the digital video in the user interface in response to receiving an indication of a change to the selection of the rate of speed.
claim 17 . The system of, further comprising identifying static background pixels for the digital video based on pixels that are outside the region of the static digital image.
claim 17 . The system of, wherein the rate of speed is a variable rate of speed, and the pixels of the region move at one or more different speeds.
Complete technical specification and implementation details from the patent document.
This application is a continuation of and claims priority to U.S. patent application Ser. No. 18/194,833, filed Apr. 3, 2023, entitled “GENERATING VIDEO FROM AN IMAGE BASED ON VARIABLE SPEED”, the entire disclosure of which is hereby incorporated by reference.
Digital images are displayed in a user interface using collections of pixels. Pixels are basic units of a digital image that represent a single color or level of brightness displayed in the user interface. In static digital images, pixels are static and do not move. Existing image processing systems use pixels from static digital images to create animations. However, techniques used to create animations cause errors in some instances, resulting in visual inaccuracies, computational inefficiencies, and increased power consumption.
Techniques and systems for generating video from an image based on variable speed are described. In an example, a variable speed system receives a static digital image displayed in a user interface, an indication of a movement direction, and an indication of a variable rate of speed.
The variable speed system generates a digital video based on the static digital image, the digital video having pixels that move in the movement direction at a speed that varies based on the variable rate of speed based on pixels from the static digital image. For example, the variable rate of speed is linear, exponential, logarithmic, sinusoidal, or quadratic. In some examples, the indication of the movement direction is represented as an arrow displayed in the user interface, and a visual characteristic of the indication of the movement direction varies proportionally with the variable rate of speed.
The variable speed system then displays the digital video in the user interface. In some examples, the static digital image is a portion selected by a user from a larger digital image, and the digital video is displayed relative to the larger digital image.
This Summary introduces a selection of concepts in a simplified form that are further described below in the Detailed Description. As such, this Summary is not intended to identify essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
Digital images are composed of collections of pixels that represent a single color or level of brightness displayed in a user interface. By default, static digital images include static pixels that do not move. However, in some situations, a user wishes to animate portions of a static digital image for aesthetic purposes. For example, a user desires to animate a static digital image that depicts a waterfall by creating a video in which the water of the waterfall appears to move but the content surrounding the waterfall remains static.
Conventional animation systems are capable of animating portions of static digital images by generating a video saved in MP4 or GIF format using pixels from a static digital image that move in a designated direction. However, conventional applications move the pixels at constant speed, which creates unrealistic animations. For example, conventional applications generate a video of a moving waterfall, but the pixels of the waterfall move downward at a constant velocity. This results in an unrealistic video because water falls faster at the bottom of a waterfall than at the top. A conventional solution to fix this problem involves the user adjusting speeds for regions of pixels manually. However, this is time consuming, and the user is unable to replicate linear, exponential, logarithmic, sinusoidal, or quadratic rates of speed by manually adjusting speeds.
Techniques and systems for generating video from an image based on a variable speed are described that overcome these limitations. A variable speed system begins in this example by receiving a portion of a digital image, e.g., that is displayed in a user interface. For example, the portion of the digital image is an area of a digital image that the user desires to animate. In some examples, the user selects the portion of the digital image by drawing an outline of the portion in the user interface using a selection tool.
The variable speed system also receives an indication of a movement direction, which is the direction the user desires the pixels to move once animated. The user indicates the movement direction by drawing an arrow in the user interface. In some examples, the user draws multiple arrows to indicate different movement directions for different areas of pixels in the portion of the digital image.
The variable speed system also receives an indication of a variable rate of speed over time. Examples of a variable rate of speed include linear, exponential, logarithmic, sinusoidal, or quadratic rates of speed. In this example, the user selects exponential acceleration from options displayed in the user interface to apply to the moving pixels of the digital video of the waterfall.
Based on the static digital image, the indication of the movement direction, and the variable rate of speed, the variable speed system automatically generates a digital video that includes moving pixels based on pixels of the digital image that move in the movement direction at a speed that varies based on the variable rate of speed. In some examples, the variable speed system automatically updates individual speeds of the moving pixels at different points in time to vary based on the variable rate of speed. For example, a user input indicating an exponential rate of speed updates the speed of the moving pixels to accelerate exponentially. In this example, updating the moving pixels of the waterfall to accelerate exponentially results in a realistic video of a waterfall. The digital video is then displayed relative to the digital image in the user interface. For example, the digital video of the moving waterfall is overlaid on the digital image so that the waterfall is animated and the remainder of the image is static.
Generating video from an image based on variable speed in this manner overcomes the disadvantages of conventional animation techniques that are limited to generating pixels that move at constant velocity. For example, applying a variable rate of speed results in pixels that change velocity based on movement distance, eliminating steps involved in conventional techniques that use manual speed adjustment for different pixels. This results in a realistic final product that mimics changes in motion that occur in real-life.
In the following discussion, an example environment is described that employs the techniques described herein. Example procedures are also described that are performable in the example environment as well as other environments. Consequently, performance of the example procedures is not limited to the example environment and the example environment is not limited to performance of the example procedures.
1 FIG. 100 100 102 is an illustration of a digital medium environmentin an example implementation that is operable to employ techniques and systems for generating video from an image based on variable speed described herein. The illustrated digital medium environmentincludes a computing device, which is configurable in a variety of ways.
102 102 102 102 10 FIG. The computing device, for instance, is configurable as a desktop computer, a laptop computer, a mobile device (e.g., assuming a handheld configuration such as a tablet or mobile phone), an augmented reality device, and so forth. Thus, the computing deviceranges from full resource devices with substantial memory and processor resources (e.g., personal computers, game consoles) to a low-resource device with limited memory and/or processing resources, e.g., mobile devices. Additionally, although a single computing deviceis shown, the computing deviceis also representative of a plurality of different devices, such as multiple servers utilized by a business to perform operations “over the cloud” as described in.
102 104 104 102 106 108 102 106 106 106 106 110 112 102 104 114 The computing devicealso includes an image processing system. The image processing systemis implemented at least partially in hardware of the computing deviceto process and represent digital content, which is illustrated as maintained in storageof the computing device. Such processing includes creation of the digital content, representation of the digital content, modification of the digital content, and rendering of the digital contentfor display in a user interfacefor output, e.g., by a display device. Although illustrated as implemented locally at the computing device, functionality of the image processing systemis also configurable entirely or partially via functionality available via the network, such as part of a web service or “in the cloud.”
102 116 104 106 116 104 116 114 The computing devicealso includes a variable speed modulewhich is illustrated as incorporated by the image processing systemto process the digital content. In some examples, the variable speed moduleis separate from the image processing systemsuch as in an example in which the variable speed moduleis available via the network.
116 118 120 110 122 124 120 122 124 120 The variable speed moduleis configured to generate video based on variable speed by first receiving an inputthat includes a static digital imagedisplayed in a user interface, an indication of a movement direction, and an indication of a variable rate of speed. For example, the static digital imageis an image to animate, the movement directionis the direction of motion for the animation, and the variable rate of speedis the change of speed for the animation. In some examples, the static digital imageis a portion of a larger digital image that is selected via one or more inputs for animation. The portion of the larger digital image depicts a specific object or material that is to be animated. Examples of objects to animate include fire, dust, fabric, water, etc.
116 126 120 126 122 124 120 120 126 124 The variable speed modulethen generates a digital videobased on the static digital image, the digital videohaving pixels that move in the movement directionat a speed that varies based on the variable rate of speedbased on pixels from the static digital image. For example, pixels of a static digital imagedepicting fire in a fireplace are used to generate a digital videoin which the pixels exhibit movement in an upward direction indicated by a user input at a speed that is slower at the bottom of a depicted flame and faster at the top of the depicted flame, according to the variable rate of speed.
116 126 128 110 126 120 126 120 120 The variable speed modulethen displays the digital videoas an outputin the user interface. In some examples, the digital videois displayed relative to the static digital image. In the above example, the digital videodepicting the animated fire is displayed over the static digital imageso that a portion of the static digital imageis animated.
In general, functionality, features, and concepts described in relation to the examples above and below are employed in the context of the example procedures described in this section. Further, functionality, features, and concepts described in relation to different figures and examples in this document are interchangeable among one another and are not limited to implementation in the context of a particular figure or procedure. Moreover, blocks associated with different representative procedures and corresponding figures herein are applicable together and/or combinable in different ways. Thus, individual functionality, features, and concepts described in relation to different example environments, devices, components, figures, and procedures herein are usable in any suitable combinations and are not limited to the particular combinations represented by the enumerated examples in this description.
2 FIG. 1 FIG. 1 10 FIGS.- 200 116 depicts a systemin an example implementation showing operation of the variable speed moduleofin greater detail. The following discussion describes techniques that are implementable utilizing the previously described systems and devices. Aspects of each of the procedures are implemented in hardware, firmware, software, or a combination thereof. The procedures are shown as a set of blocks that specify operations performed and/or caused by one or more devices and are not necessarily limited to the orders shown for performing the operations by the respective blocks. In portions of the following discussion, reference is made to.
116 118 120 110 120 202 120 110 202 120 To begin in this example, the variable speed modulereceives an inputincluding a static digital imagedisplayed in a user interface. For example, the static digital imageincludes static pixelsthat are basic units of the static digital imageand represent a single color or level of brightness displayed in the user interface. In this example, the static pixelscollectively represent the static digital imageand do not move.
118 122 110 122 120 120 The inputalso includes an indication of a movement direction. For example, a user draws an arrow in the user interfaceindicating the movement direction, which is the direction in which the user desires the pixels of the static digital imageto move to give the appearance that the static digital imageis animated.
118 124 124 124 122 124 110 124 5 FIG. The inputalso includes an indication of a variable rate of speed. Examples of the variable rate of speedinclude a linear, exponential, logarithmic, sinusoidal, or quadratic rate of speed. The variable rate of speedalso specifies speeding up or slowing down. For example, the indication of the movement directionis a representation having a display characteristic that varies as indicative of relative speeds at respective points in time. In some examples, the variable rate of speedis represented as a thickness of the arrow displayed in the user interfacethat varies proportionally with the variable rate of speed. For example, a rate of speed that increases linearly has an arrow that is thinner at the beginning and is thicker at the end closest to the arrow point, indicating speed that increases along the distance of the arrow, as discussed in detail below with respect to.
116 204 204 126 206 122 206 202 120 204 202 120 The variable speed modulealso includes a digital video module. For instance, the digital video modulegenerates a digital videoincluding moving pixelsthat move in the movement direction. The moving pixelsare based on the static pixelsof the static digital image. The digital video moduleanimates the static pixelsin a way that an object depicted in the static digital imageappears to move.
116 208 208 210 124 206 124 208 126 206 124 126 204 208 116 126 210 124 The variable speed modulealso includes an updated speed module. The updated speed modulegenerates updated moving pixelsbased on the variable rate of speedby updating individual speeds of the moving pixelsto vary based on variable rate of speed. For example, the updated speed moduleupdates the digital videoto speed up or slow down the moving pixelsbased on the variable rate of speed. This gives the appearance that the object depicted in the digital videospeeds up or slows down along its path of travel. Although this example describes the digital video moduleand the updated speed moduleseparately, in some examples the variable speed moduleautomatically generates the digital videowith moving pixelsbased on the variable rate of speedwithout updating speeds.
128 116 126 120 126 The outputof the variable speed moduleincludes the digital video. In some examples, the static digital imageis a portion selected by a user from a larger digital image, and the digital videois displayed relative to the larger digital image.
3 7 FIGS.- depict stages of generating video from an image based on variable speed. In some examples, the stages depicted in these figures are performed in a different order than described below.
3 FIG. 300 120 110 116 120 depicts an exampleof receiving a static digital imagedisplayed in a user interface. As illustrated, the variable speed modulereceives a user input a static digital imageto animate.
120 302 304 302 120 302 120 302 120 110 120 302 120 In some examples, the static digital imageis a portion of a larger digital imagethat the user selects. For example, a user draws a boundary linearound the portion of the larger digital imagedisplayed in the user interface. This is the portion selected for animation, while the remainder of the digital image remains static. In other examples, the user selects the static digital imageby clicking a button in a user interface to automatically select a portion of the static digital image for animation. For example, the user selects a button labeled “Sky” to select the sky depicted in the larger digital imageas the static digital imageor selects a button labeled “Background” to select the background in the larger digital imageas the static digital image. Additionally or alternatively, a mask is displayed in the user interfaceover the static digital imageto indicate the portion of the larger digital imagethat is to be animated. In other examples, the static digital imageis an entire digital image that a user selects for animation.
120 116 In other examples, a static digital imageis selected for animation automatically, without user input. For example, the variable speed moduledetects a portion of a digital image with uniform texture or pattern that is suitable for animation, using object identification by a machine-learning model, and so forth. Examples of portions of a digital image automatically selected for animation include portions depicting water, clouds, fire, smoke, dust, automobiles, crowds of people, etc.
304 302 110 302 In this example, the user draws a boundary linearound a waterfall in a larger digital imagedepicted in a user interface. This indicates that the portion of the larger digital imagethat the user desires to animate includes the waterfall.
4 FIG. 4 FIG. 3 FIG. 400 122 126 206 122 116 120 204 122 depicts an exampleof receiving an indication of a movement directionand generating a digital videoincluding moving pixelsthat move in the movement direction.is a continuation of the example described in. After the variable speed modulereceives the static digital image, the digital video modulereceives an indication of a movement direction.
402 120 110 402 For example, the user draws an arrowover the static digital imagedisplayed in the user interfaceto indicate a desired direction of movement. The pointed end of the arrow points in the direction the user desires the pixels to move. In some examples, the arrowis curved, indicating movement in a curved or rotational trajectory.
122 204 126 206 122 204 202 120 202 206 122 204 202 126 In response to receiving the indication of the movement direction, the digital video modulegenerates a digital videothat includes moving pixelsthat move in the movement direction. For example, the digital video moduleanimates static pixelsfrom the static digital image. Once animated, the static pixelsbecome moving pixelsthat move in the movement direction. To achieve this, the digital video modulecreates a collection of frames using the static pixelsand stitches the frames together into a digital video.
402 120 110 204 126 206 122 In this example, the user draws an arrowpointed downward along the path of the waterfall depicted in the static digital imagedisplayed in the user interface. In response, the digital video modulegenerates a digital videoof the waterfall including moving pixelsthat move in the movement directionat constant speed.
5 FIG. 5 FIG. 4 FIG. 500 124 206 124 204 126 206 122 208 210 124 204 208 204 206 depicts an exampleof receiving an indication of a variable rate of speedand updating the moving pixelsto have speeds that vary based on the variable rate of speed.is a continuation of the example described in. After the digital video modulegenerates the digital videoincluding moving pixelsthat move in the movement direction, the updated speed modulegenerates updated moving pixelsbased on the variable rate of speed. Although the digital video moduleand the updated speed moduleare described separately, the steps performed by the digital video moduleand the moving pixelsare performed simultaneously in some examples.
124 110 124 206 124 For example, the user selects an indication of a speed and the indication of the variable rate of speedby selecting an option displayed in the user interface. Examples of a variable rate of speedinclude linear, exponential, logarithmic, sinusoidal, or quadratic rate of speed. For example, selecting a linear rate of speed increases the movement speed of the moving pixelslinearly. The variable rate of speedalso specifies speeding up or slowing down.
124 402 110 124 502 402 In some examples, the variable rate of speedis represented as a thickness of the arrowdisplayed in the user interfacethat varies proportionally with the variable rate of speed. This is displayed as an arrow tail with varying thickness. For example, a rate of speed that increases linearly has an arrow that is thinner at the beginning of the arrow tail and is thicker at the end closest to the arrow point, indicating speed that increases along the distance of the arrow.
208 210 206 124 The updated speed modulegenerates updated moving pixelsbased on the moving pixelsby updating speeds of individual pixels based on a varying speed. Varying speed, Fn(x), is calculated using one of the below formulas depending on the variable rate of speedselected:
124 124 where C is the base speed selected by the user and X is a variability factor selected by the user. For example, the user selects a variable rate of speedthat specifies increasing speed or decreasing speed. Increasing speed results in pixels that speed up proportionally to distance traveled, and decreasing speed results in pixels that slow down proportionally to distance traveled. Additionally or alternatively, the variable rate of speedincludes different variations of rate of speed over time. For example, pixel speed increases and then decreases.
208 210 402 208 110 402 502 402 126 210 In this example, the user selects a button in the user interface labeled “Gradual” (Linear) variable rate of speed. In response, the updated speed modulegenerates updated moving pixelsby increasing the speed of the pixels toward the end of the arrow. This is represented by the updated speed modulein the user interfacewith an arrowwith and an arrow tail with varying thicknessthat is thicker toward the end of the arrow. The digital videoincluding the updated moving pixelsgives the appearance that the water of the waterfall speeds up linearly toward the bottom of the waterfall.
124 124 210 402 110 502 126 126 In some examples, the variable rate of speedincludes different variations of rate of speed over time. For example, the variable rate of speedspecifies moving pixelsin which water speeds up down the waterfall but then slows when splashing from an object. In this example, this is represented by an arrowdisplayed in the user interfacehaving an arrow tail with varying thicknessthat is thicker corresponding to a region of the digital videowhere the water speeds up and thinner corresponding to a region of the digital videowhere the water slows down.
126 110 126 302 126 302 126 The digital videois output for display in the user interface. In some examples, the digital videois displayed relative to the larger digital image. For example, the digital videoof the waterfall is overlaid on the larger digital imagethat includes the image of the hiker. This gives the appearance that the waterfall is moving while the rest of the image remains static. In some examples, the digital videois saved in MP4 or GIF format.
6 FIG. 124 depicts different indications of a variable rate of speed. For example, an indication of variable rate of speedincludes increasing speed or decreasing speed.
602 604 606 602 606 124 In this example, speed at the beginning of the arrow is represented as speed=X, and speed at the end of the arrow is represented as speed=Y. Increasing speed arrowdepicts variable speed that increases from the beginning of the arrow, where X<Y. Steady speed arrowdepicts steady speed, where X=Y. Decreasing speed arrowdepicts variable speed that decreases from the beginning of the arrow to the end of the arrow, where X>Y. The increasing speed arrowand the decreasing speed arrowalso represents a variable rate of speedthat is linear, exponential, logarithmic, sinusoidal, or quadratic
7 FIG. 7 FIG. 3 FIG. 116 120 204 122 depicts an example of generating video from an image based on variable speed with multiple arrows.is a continuation of the example described in. After the variable speed modulereceives the static digital image, the digital video modulereceives an indication of a movement direction.
120 110 702 704 702 704 For example, the user draws multiple arrows over the static digital imagedisplayed in the user interfaceto indicate a desired direction of movement. The user draws a first arrowand a second arrow. The pointed ends of the first arrowand the second arrowpoint in the direction the user desires the pixels to move.
122 702 704 {arrow: start, end} The indication of the movement directionis based on the first arrowand the second arrow. For example, the arrows drawn by the user are stored in an order of drawing in an arrow list (arrowList) represented by:
The variable speed module includes a machine learning model that determines a change in speed, Δ calculated based on a variability algorithm. For example, Δ between two consecutive arrows is calculated using the following equation:
The speed of each arrow is identified based on Δ, and the speed of each consecutive arrow is increased based on Δ. For example, the speed array is populated for the arrows by iterating over the arrow list to create an improvised input using:
while (!arrowList.empty( )) Speed = speed + (speed * Δ) Push speed to speedArray arrowList.pop( ) return speedArray
204 126 The machine learning model of the digital video modulethen generates realistic motion output in the digital video.
204 122 122 Some examples include multiple arrows, each one of the multiple arrows indicating a different movement direction. The movement direction is determined by the machine learning model based on a distance of a pixel from the arrow. For example, each pixel moves in the direction of the arrow the pixel is closest to. The digital video moduledetermines which arrow a pixel is closest to by calculating a shortest Euclidean distance between the pixel and an arrow. A Euclidean distance is a length of a line between two points. The pixel then moves in the movement direction indicated by the closest arrow. In other examples, the machine learning model determines the movement directionusing image recognition. For example, the machine learning model identifies a boundary of an object depicted in the digital image. The pixels within the boundary of the object are then animated to move in the movement directionindicated by the arrow.
702 704 208 124 702 704 208 210 702 702 704 704 704 702 704 702 126 210 In this example, the user draws the first arrowand the second arrow. The user also selects a button in the user interface labeled “Gradual” (Linear) variable rate of speed. In response, the updated speed moduleidentifies the variable rate of speedbased on the first arrowand the second arrow. For example, speed increases linearly along the path of the consecutive arrows. Based on this, the updated speed modulegenerates updated moving pixelsby increasing the speed of the pixels along a path of movement from the beginning of the first arrow, toward the end of the first arrow, toward the beginning of the second arrow, and toward the end of the second arrow. In this example, the second arrowis thicker than the first arrowbecause velocities of pixels surrounding the second arrowaccelerate faster than velocities of pixels surrounding the first arrow. The digital videoincluding the updated moving pixelsgives the appearance that the water of the waterfall speeds up linearly toward the bottom of the waterfall.
1 7 FIGS.- The following discussion describes techniques which are implementable utilizing the previously described systems and devices. Aspects of each of the procedures are implementable in hardware, firmware, software, or a combination thereof. The procedures are shown as a set of blocks that specify operations performed by one or more devices and are not necessarily limited to the orders shown for performing the operations by the respective blocks. In portions of the following discussion, reference is made to.
8 FIG. 800 802 118 120 110 122 124 124 122 402 110 122 124 120 302 124 depicts a procedurein an example implementation of generating video from an image based on variable speed. At block, an inputis received including a static digital imagedisplayed in a user interface, an indication of a movement direction, and an indication of a variable rate of speed. For example, the variable rate of speedis linear, exponential, logarithmic, sinusoidal, or quadratic. In some examples, the indication of the movement directionis represented as an arrowdisplayed in the user interface. Additionally or alternatively, a visual characteristic of the indication of the movement directionvaries proportionally with the variable rate of speed. In some examples, the indication of the movement direction specifies curved movement. Some examples further comprise multiple arrows, each one of the multiple arrows indicating a different movement direction. In some examples, the static digital imageis a portion selected by a user from within a larger digital image. Additionally or alternatively, the variable rate of speedspecifies speeding up or slowing down.
804 126 120 126 122 124 120 122 402 At block, a digital videois generated based on the static digital image, the digital videohaving pixels that move in the movement directionat a speed that varies based on the variable rate of speedbased on pixels from the static digital image. In some examples, the movement directionis determined based on a distance of a pixel from the arrow.
806 126 110 126 302 At block, the digital videois displayed in the user interface. In some examples, the digital videois displayed within the larger digital image.
9 FIG. 900 902 118 110 122 124 124 122 402 110 122 124 122 depicts a procedurein an additional example implementation of generating video from an image based on variable speed. At block, an inputis received including a portion of a digital image displayed in a user interface, an indication of a movement direction, and an indication of a variable rate of speed. For example, the variable rate of speedis linear, exponential, logarithmic, sinusoidal, or quadratic. In some examples, the indication of the movement directionis represented as an arrowdisplayed in the user interface. Additionally or alternatively, a visual characteristic of the indication of the movement directionvaries proportionally with the variable rate of speed. In some examples, the indication of the movement directionspecifies curved movement. Some examples further comprise multiple arrows, each one of the multiple arrows indicating a different movement direction.
904 126 122 122 402 At block, a digital videois generated including pixels based on pixels of the digital image that move in the movement direction. In some examples, the movement directionis determined based on a distance of a pixel from the arrow.
906 124 At block, individual speeds of the pixels are updated to vary based on the variable rate of speed.
908 126 110 At block, the digital videois displayed relative to the digital image in the user interface.
10 FIG. 1000 1002 116 1002 illustrates an example system generally atthat includes an example computing devicethat is representative of one or more computing systems and/or devices that implement the various techniques described herein. This is illustrated through inclusion of the variable speed module. The computing deviceis configurable, for example, as a server of a service provider, a device associated with a client (e.g., a client device), an on-chip system, and/or any other suitable computing device or computing system.
1002 1004 1006 1008 1002 The example computing deviceas illustrated includes a processing system, one or more computer-readable media, and one or more I/O interfacethat are communicatively coupled, one to another. Although not shown, the computing devicefurther includes a system bus or other data and command transfer system that couples the various components, one to another. A system bus includes any one or combination of different bus structures, such as a memory bus or memory controller, a peripheral bus, a universal serial bus, and/or a processor or local bus that utilizes any of a variety of bus architectures. A variety of other examples are also contemplated, such as control and data lines.
1004 1004 1010 1010 The processing systemis representative of functionality to perform one or more operations using hardware. Accordingly, the processing systemis illustrated as including hardware elementthat is configurable as processors, functional blocks, and so forth. This includes implementation in hardware as an application specific integrated circuit or other logic device formed using one or more semiconductors. The hardware elementsare not limited by the materials from which they are formed or the processing mechanisms employed therein. For example, processors are configurable as semiconductor(s) and/or transistors (e.g., electronic integrated circuits (ICs)). In such a context, processor-executable instructions are electronically-executable instructions.
1006 1012 1012 1012 1012 1006 The computer-readable storage mediais illustrated as including memory/storage. The memory/storagerepresents memory/storage capacity associated with one or more computer-readable media. The memory/storageincludes volatile media (such as random access memory (RAM)) and/or nonvolatile media (such as read only memory (ROM), Flash memory, optical disks, magnetic disks, and so forth). The memory/storageincludes fixed media (e.g., RAM, ROM, a fixed hard drive, and so on) as well as removable media (e.g., Flash memory, a removable hard drive, an optical disc, and so forth). The computer-readable mediais configurable in a variety of other ways as further described below.
1008 1002 1002 Input/output interface(s)are representative of functionality to allow a user to enter commands and information to computing device, and also allow information to be presented to the user and/or other components or devices using various input/output devices. Examples of input devices include a keyboard, a cursor control device (e.g., a mouse), a microphone, a scanner, touch functionality (e.g., capacitive or other sensors that are configured to detect physical touch), a camera (e.g., employing visible or non-visible wavelengths such as infrared frequencies to recognize movement as gestures that do not involve touch), and so forth. Examples of output devices include a display device (e.g., a monitor or projector), speakers, a printer, a network card, tactile-response device, and so forth. Thus, the computing deviceis configurable in a variety of ways as further described below to support user interaction.
Various techniques are described herein in the general context of software, hardware elements, or program modules. Generally, such modules include routines, programs, objects, elements, components, data structures, and so forth that perform particular tasks or implement particular abstract data types. The terms “module,” “functionality,” and “component” as used herein generally represent software, firmware, hardware, or a combination thereof. The features of the techniques described herein are platform-independent, meaning that the techniques are configurable on a variety of commercial computing platforms having a variety of processors.
1002 An implementation of the described modules and techniques is stored on or transmitted across some form of computer-readable media. The computer-readable media includes a variety of media that is accessed by the computing device. By way of example, and not limitation, computer-readable media includes “computer-readable storage media” and “computer-readable signal media.”
1002 “Computer-readable storage media” refers to media and/or devices that enable persistent and/or non-transitory storage of information in contrast to mere signal transmission, carrier waves, or signals per se. Thus, computer-readable storage media refers to non-signal bearing media. The computer-readable storage media includes hardware such as volatile and non-volatile, removable and non-removable media and/or storage devices implemented in a method or technology suitable for storage of information such as computer readable instructions, data structures, program modules, logic elements/circuits, or other data. Examples of computer-readable storage media include but are not limited to RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, hard disks, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or other storage device, tangible media, or article of manufacture suitable to store the desired information and are accessible by a computer. “Computer-readable signal media” refers to a signal-bearing medium that is configured to transmit instructions to the hardware of the computing device, such as via a network. Signal media typically embodies computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as carrier waves, data signals, or other transport mechanism. Signal media also include any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media.
1010 1006 As previously described, hardware elementsand computer-readable mediaare representative of modules, programmable device logic and/or fixed device logic implemented in a hardware form that are employed in some embodiments to implement at least some aspects of the techniques described herein, such as to perform one or more instructions. Hardware includes components of an integrated circuit or on-chip system, an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a complex programmable logic device (CPLD), and other implementations in silicon or other hardware. In this context, hardware operates as a processing device that performs program tasks defined by instructions and/or logic embodied by the hardware as well as a hardware utilized to store instructions for execution, e.g., the computer-readable storage media described previously.
1010 1002 1002 1010 1004 1004 Combinations of the foregoing are also be employed to implement various techniques described herein. Accordingly, software, hardware, or executable modules are implemented as one or more instructions and/or logic embodied on some form of computer-readable storage media and/or by one or more hardware elements. The computing deviceis configured to implement particular instructions and/or functions corresponding to the software and/or hardware modules. Accordingly, implementation of a module that is executable by the computing deviceas software is achieved at least partially in hardware, e.g., through use of computer-readable storage media and/or hardware elementsof the processing system. The instructions and/or functions are executable/operable by one or more articles of manufacture (for example, one or more computing devices and/or processing systems) to implement techniques, modules, and examples described herein.
1002 1016 The techniques described herein are supported by various configurations of the computing deviceand are not limited to the specific examples of the techniques described herein. This functionality is also implementable through use of a distributed system, such as over a “cloud” 1114 via a platformas described below.
1014 1016 1018 1016 1014 1018 1002 1018 The cloudincludes and/or is representative of a platformfor resources. The platformabstracts underlying functionality of hardware (e.g., servers) and software resources of the cloud. The resourcesinclude applications and/or data that can be utilized when computer processing is executed on servers that are remote from the computing device. Resourcescan also include services provided over the Internet and/or through a subscriber network, such as a cellular or Wi-Fi network.
1016 1002 1016 1018 1016 1000 1002 1016 1014 The platformabstracts resources and functions to connect the computing devicewith other computing devices. The platformalso serves to abstract scaling of resources to provide a corresponding level of scale to encountered demand for the resourcesthat are implemented via the platform. Accordingly, in an interconnected device embodiment, implementation of functionality described herein is distributable throughout the system. For example, the functionality is implementable in part on the computing deviceas well as via the platformthat abstracts the functionality of the cloud.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
May 14, 2026
September 17, 2026
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.