Systems and methods for providing image feedback

A computer-implemented method may include receiving, over a network, an image from an image capture device, determining an image adjustment to the image, and communicating, over the network, the image adjustment to the image capture device.

TECHNICAL FIELD

This description relates to providing image feedback.

BACKGROUND

Users take digital pictures at all zoom levels and from all angles. Sometimes, these digital pictures are taken such that the subject does not appear upright. In some cases this may be intentional, and in other cases this may not be intentional. Users also scan analog and/or digital items in order to create digital soft copies. Again, sometimes unintentionally, the analog and/or digital items may be scanned in at a slight tilt. Users may desire to take more accurate digital pictures of a subject.

SUMMARY

This document describes systems and techniques that may be used to provide image feedback to a user and/or to adjust images taken by the user. In general, an image capture device may capture an image and communicate the image over a network to a system that is configured to provide image feedback and/or image adjustments back to the image capture device. For example, a user may use a digital camera to capture an image of a subject. The image may be sent from the digital camera over a network such that the image is presented for display to multiple independent users, who may provide suggestions and/or adjustments to the image. The image adjustments and/or suggestions are communicated back to image capture device. In this exemplary manner, the user at the image capture device may receive substantially real time feedback on the image that they just captured enabling the user to adjust the image right away at the device or enabling the user to retake the picture of the subject taking into account the adjustments suggested by the group of independent users.

In certain implementations, image adjustments and suggestions may be accumulated over time such that a larger sample of independent users may weigh in on suggested image adjustments. Then, at a later time, the user of the image capture device can make adjustments to the image based on the accumulated feedback from a larger number of independent users.

Also, the image may be provided to multiple independent users and those users may be asked to reorient the image to a proper orientation. For example, the image captured by the image capture device may be skewed or tilted. The image may be presented to the independent users, in substantially real time, and those users may rotate the image to a proper angle. The reorientations of the independent users may be accumulated and statistically analyzed and an image adjustment may be communicated back to the image capture device, again in substantially real time. In some instances, the image may be presented to the independent users through accessing a service or a web site on the Internet. In other instances, the images may be presented to the independent users as part of an online game in an online game setting.

Also, the image adjustment provided back to the image capture device may include an actual angle correction and/or it may include an indicator such as, for example, a horizontal line or a frame, that shows the user how to adjust the camera to retake the picture. Or, it just may provide a message to the user that suggestions have been made to adjust the tilt of the image. If the user accepts the adjustment, then the image is corrected and saved in its corrected form at the image capture device. This may eliminate the need for the user to later correct images after they have been uploaded to a software program for editing images.

Also, other types of image adjustments and feedback may be provided from the independent users back to the image capture device. For example, the image adjustments may include changing camera settings such as the flash, changing locations, holding the camera for a portrait shot instead of a landscape shot, or vice versa, as well as other image adjustments and feedback.

A group of independent users may be preferred to sending the image over a network to a machine that is configured to make image adjustments, because it may be difficult in some circumstances for the machine to determine adjustments related to a proper orientation for the image. Humans may be more suitable and accurate at providing this feedback than a machine, especially if a statistically suitable sample of humans has been polled.

A confidence level related to the image adjustment and/or the other feedback may be provided to the image capture device so that the user has an indication as to the level of confidence in the corrections and suggestions being made by the independent users. For instance, a higher confidence level may be provided if the image was presented to a large number of independent users and the users had a uniformly consistent adjustment to the image. A lower confidence level may be provided if the image was presented to a smaller number of independent users and/or the users had non-uniform or scattered adjustments to the image.

According to one general aspect, a computer-implemented method includes receiving, over a network, an image from an image capture device, determining an image adjustment to the image, and communicating, over the network, the image adjustment to the image capture device.

Implementations may include one or more of the following features. For example, receiving the image from the image capture device may include receiving, over the network, the image from a camera, a mobile device having a camera, or a scanner.

In one exemplary implementation, determining the image adjustment may include calculating a correction angle for the image using an image aligner. Also, determining the image adjustment may include presenting the image to one or more independent users, requesting that the users make an adjustment to the image and calculating the image adjustment based on the adjustments of the one or more independent users.

In another exemplary implementation, determining the image adjustment may include calculating a first correction angle using an image aligner, presenting the image to one or more independent users, requesting that the users make an angle adjustment to the image, calculating a second correction angle using the angle adjustments of the one or more independent users, and calculating a final correction angle based on the first correction angle and the second correction angle. Communicating the image adjustment may include communicating the final correction angle to the image capture device.

In another exemplary implementation, determining the image adjustment may include presenting the image to one or more independent users, requesting that the users reorient the image, and calculating a correction angle based on the reorientations of the image by the one or more independent users. Communicating the image adjustment may include communicating the correction angle to the image capture device. Determining the image adjustment and communicating the image adjustment to the image capture device may occur in substantially real time. The computer-implemented method may further include receiving additional reorientations of the image from additional independent users, recalculating the correction angle to include the additional reorientations of the image from the additional independent users, and communicating the recalculated correction angle to the image capture device.

In another exemplary implementation, determining the image adjustment may include presenting the image to one or more independent users in a game setting, requesting that the users reorient the image as part of a game in the game setting, and calculating a correction angle based on results of the game. Communicating the image adjustment may include communicating the correction angle to the image capture device.

In another exemplary implementation, receiving the image may include receiving, over the network, the image and image location metadata from the image capture device and determining the image adjustment may include determining the image adjustment based on images stored in an image repository having similar image location metadata.

In another general aspect, a computer program product for performing image adjustments may be tangibly embodied on a computer-readable medium and including executable code that, when executed, is configured to cause a data processing apparatus to receive, over a network, an image from an image capture device, determine an image adjustment to the image and communicate, over the network, the image adjustment to the image capture device.

Implementations may include one or more of the following features. For example, the executable code that causes the data processing apparatus to determine the image adjustment may include executable code that, when executed, is configured to cause the data processing apparatus to present the image to one or more independent users, request that the users make an adjustment to the image, and calculate the image adjustment based on the adjustments of the one or more independent users.

In one exemplary implementation, the executable code that causes the data processing apparatus to determine the image adjustment may include executable code that, when executed, is configured to cause the data processing apparatus to present the image to one or more independent users, request that the users reorient the image, and calculate a correction angle based on the reorientations of the image by the one or more independent users. The executable code that causes the data processing apparatus to communicate the image adjustment may include executable code that, when executed, is configured to cause the data processing apparatus to communicate the correction angle to the image capture device.

In another exemplary implementation, the executable code that causes the data processing apparatus to determine the image adjustment may include executable code that, when executed, is configured to cause the data processing apparatus to calculate a first correction angle using an image aligner, present the image to one or more independent users, request that the users make an angle adjustment to the image, calculate a second correction angle using the angle adjustments of the one or more independent users, and calculate a final correction angle based on the first correction angle and the second correction angle. The executable code that causes the data processing apparatus to communicate the image adjustment may include executable code that, when executed, is configured to cause the data processing apparatus to communicate the final correction angle to the image capture device.

In another exemplary implementation, the executable code that causes the data processing apparatus to determine the image adjustment may include executable code that, when executed, is configured to cause the data processing apparatus to present the image to one or more independent users in an online game setting, request that the users reorient the image as part of a game in the online game setting, and calculate a correction angle based on results of the game. The executable code that causes the data processing apparatus to communicate the image adjustment may include executable code that, when executed, is configured to cause the data processing apparatus to communicate the correction angle to the image capture device. The executable code that causes the data processing apparatus to determine the image adjustment and to communicate, over the network, the image adjustment to the image capture device may occur in substantially real time.

In another general aspect, a method may include capturing an image using an image capture device, communicating the image over a network from the image capture device to an image server and receiving, at the image capture device, an image adjustment from the image server over the network.

Implementations may include one or more of the following features. For example, receiving the image adjustment may include receiving the image adjustment in substantially real time. The image adjustment may include a correction angle, a line that provides an indication of a correction angle, and/or a correction angle based on an accumulation of reorientation inputs by one or more independent users.

In another general aspect, an apparatus may include an image capture module that is arranged and configured to capture an image, a communication module that is arranged and configured to communicate the image over a network to an image server and that is arranged and configured to receive an image adjustment over the network from the image server and a processor that is arranged and configured to control the image capture module and the communication module and to process the image adjustment received by the communication module.

Implementations may include one or more of the following features. For example, the communication module may receive the image adjustment in substantially real time. The image adjustment may include a correction angle, a line that provides an indication of a correction angle, and/or a correction angle based on an accumulation of reorientation inputs by one or more independent users.

DETAILED DESCRIPTION

This document describes systems and techniques for providing image feedback. Such techniques may include capturing an image on an image capture device and sending the captured image over a network. The image may be presented to multiple independent users, who are asked to provide image adjustments or other feedback related to the image. The image adjustments and the other feedback are accumulated and communicated over the network to the image capture device. The capturing of the image, accumulating the image adjustments and other feedback from the independent users and sending the image adjustments and feedback to the image capture device may be completed in a very short period of time in substantially real time. For example, image adjustments and the feedback may be returned to the image capture device almost immediately after a user has captured the image of the subject with the image capture device. In this manner, for instance, the user receives immediate feedback on the digital picture just taken and can decide whether to accept the image adjustments to the image, as suggested by the independent users, and/or can take a new digital picture of the subject taking into account the feedback provided by the independent users. A confidence level related to the image adjustment and/or the other feedback may be provided to the image capture device so that the user has an indication as to the level of confidence in the corrections and suggestions being made by the independent users. For instance, a higher confidence level may be provided if the image was presented to a large number of independent users and the users had a uniformly consistent adjustment to the image.

FIG. 1is a block diagram of a system100for providing image feedback. In general, an image capture device captures an image, communicates the image over a network to other independent users, who provide adjustments to the image and/or other feedback, which is communicated over the network back to the image capture device.

InFIG. 1, the system100includes an image capture device102, a network104, an image server106, an image database108, and multiple clients110a-110n. The image capture device102may include any type of device that is configured to capture an image and to communicate the image over a network. For example, the image capture device102may include a digital camera, a cellular phone having a digital camera, a personal digital assistant (PDA) having a digital camera, a scanner, or any type of mobile device that includes a digital camera.

The image capture device102may be configured to include an image capture module112, a communication module114, and a processor116. The image capture module112may be configured to capture an image. For example, the image capture module112may include one or more lenses and an image sensor (e.g., a charge coupled device (CCD), complementary metal oxide semiconductor (CMOS) device or the like) to capture the image. The communication module114may be configured to communicate images and other information over the network104and may be configured to receive an image adjustment and/or other image feedback from the image server106. The communication module114may include a wired and/or wireless card to enable the communications over the network104such that images may be transmitted and information may be received over the network104including image adjustment and other image feedback information. The processor116may be configured to control the image capture module112and the communication module114and to process the image adjustments and other image feedback received by the communication module114.

Network104may be any network or combination of networks that can carry data communication. The network104may include and type of wired network, wireless network or combination of wired and wireless networks. The network104may include, but is not limited to, a local area network (LAN), a wide area network (WAN) such as the Internet and other types and combinations of networks. The network104can support protocols and technology including World Wide Web protocols and/or services. Intermediate web servers, gateways, switches, other servers, or other networking components may be provided between components of system100depending upon a particular application or environment.

The image server106may be configured to receive one or more images from the image capture device102and to process and coordinate image adjustments and other image feedback related to the received images. The image server106may include a combination of one or more servers that operate in coordination. The image server106may include a web server or may be coupled to communicate with a web server at the same or a different location. A web server may include a computing device of hardware and software that is configured to receive HTTP requests and to respond with an HTTP response. The image server106also may be configured to communicate using any protocol over the network104to transmit data to and receive data from the image capture device102and the clients110a-110n.

The image server106may be configured to communicate with the image database108. The image database108may include a repository of images and associated metadata for the images. For example, the image database108may include many stored images taken by users and may include metadata for each image including, but not limited to, a date, a time, a GPS location, text and keywords, image capture device settings and other information. The image database108may include a repository of images of landmarks (e.g., buildings, bridges, and other landmarks) and related metadata.

Also, the image database108may be configured to store images received from the image capture device102and any metadata sent along with the images. The image database108may be configured to receive and accumulate image adjustment and other image feedback that may be provided by the clients110a-110n. The image database108may be configured to keep track of the image adjustment and other image feedback and to associate that information with the appropriate image.

The image server106may include an image aligner118. In one exemplary implementation, the image aligner118may be configured to calculate and to determine a proper orientation for images received from the image capture device102. In this manner, the image aligner118may attempt to determine any image adjustments such as, for example, a correction angle, without any input from other independent users. For instance, the image aligner118may calculate the correction angle and communicate the correction angle information back to the image capture device102.

In another exemplary implementation, the image aligner118may be configured to receive the image adjustment information from independent users such as, for example, clients110a-110n. The image aligner118may process the image adjustments from the independent users and send that information back to the image capture device102. For example, if the image adjustment is a correction angle to reorient the image, the image aligner118may perform statistical analysis on the reorientations received from the clients110a-110nand send the information to the image capture device102based on the results of the statistical analysis.

Different statistical calculations may be used to determine the image adjustment information that is returned to the image capture device102based on the inputs of the independent users. For example, the mean or average for the images may be used and then the standard deviation and variance may be applied to determine if the data remains around the mean/average. In some implementations, statistical tests such as, for example, a t-test, may be used to determine if there is a large enough sample of independent users to make the statistical analysis valid.

In another exemplary implementation, the image aligner118may be configured to use a combination of inputs accumulated and analyzed from independent users and machine processing by the image aligner118. For example, in the case of determining a proper orientation for a received image, the image aligner118may calculate and determine what it believes to be the proper orientation for the image. In this manner, the image aligner may calculate a first correction angle to be applied to the image. The image also may be displayed to multiple independent users such as clients110a-110nso that the independent users can reorient the image to a proper orientation. In this manner, the accumulated feedback from the independent users may be a second correction angle. The image aligner118may analyze the results from the independent users and compare and/or combine the results with its own machine-based analysis to determine the proper orientation for the image. In this manner, the image aligner118may calculate a final correction angle that is based on the first correction angle and the second correction angle. The image adjustment information then may be sent back to the image capture device102for the user to determine whether or not to accept the provided image adjustment information. In this manner, the final correction angle may be sent back to the image capture device102.

The clients110a-110nmay include multiple different computing devices for multiple independent users. The clients110a-110nmay include any type of computing device including, but not limited to, personal computers, work stations, laptop computers and mobile computing devices such as, for example, PDAs, cellular phones and the like. The clients110a-110nmay each include multiple different applications to enable the operation of the client including a browser application120a-120n.

The clients110a-110nmay be configured to view one or more images that have been taken by the image capture device102, sent over the network104to the image server106, where the image server106has made the images available for display and viewing by the clients110a-110nover the network104. For example, a user of the image capture device102may designate the captured images available for public display and viewing so that the images can be presented to multiple independent users in order to receive image adjustments and/or other image feedback about the captured images. The clients110a-110nmay access a designated service or a designated website using the respective browsers120a-120nto view the images. The clients110a-110nmay present the images and ask the users to provide image adjustments to the images. For instance, the clients110a-110nmay present the images and ask the users to reorient the images, if at all, to a proper orientation and to submit the reorientation information. The information submitted by the clients110a-110nis sent over the network104and accumulated and analyzed by the image aligner118of the image server106. Then, image adjustment information is sent over the network104to the image capture device102.

The process of sending the images from the image capture device102to the image server106and then to the clients110a-110nand receiving the image adjustment feedback back at the image capture device102may be a very fast time such that the user may still be focused on the subject of the image. The image adjustment feedback is meant to be received immediately back at the image capture device102so that the user can accept the information and actually alter the image on the image capture device102and also may have the opportunity to recapture another image of the subject taking into account any feedback or suggestions from the independent users. In this manner, the information is provided back to the image capture device102in substantially real time.

In other implementations, the real time information may be sent back to the image capture device102and additional information may continue to be accumulated by the image server106from the clients110a-110n. The accumulated information may be stored in the image database108and analyzed to refine the initial real time image adjustments such that the user of the image capture device102can later adjust the image based on the refined calculations that may have been revised over a longer period of time and take into account information from additional independent users.

For example, through the clients110a-110n, the independent users may provide image adjustment information such as a correction angle, reorientation information, whether or not to shoot the subject in portrait or landscape, lighting information, zoom and wide angle information, and other types of information. The information provided may include suggestions as to a geographic position when shooting the subject.

The information sent back to the image capture device102may include different types of image adjustment information and/or suggestions. For instance, if the independent users and/or the image aligner118determine a reorientation for the image, then a bordered image may be sent back to the image capture device102showing how the image should be reoriented. The user may be asked to accept the reorientation and, if accepted, the image is adjusted on the image capture device102. Other information may include a corrected image, text suggestions, a list of suggestions including a list of possible reorientations, a menu of suggestions, and the like. For instance, if the image aligner118determines that there may be two possible orientations such as upright or sideways, then the suggestions may be sent back in a menu so that the user can select one of the options. Of course, the user may not wish to accept any of the suggestions and may just leave the image as originally captured.

Referring toFIG. 2A, an exemplary image capture device202is illustrated. In this example, the image capture device202is illustrated as a digital camera. The image capture device202includes a display area222that is configured to display captured images such as image224, as well as other information including text and other graphical information. The captured image224is taken by the image capture device202and is communicated to the image server106over the network104. As discussed above with respect toFIG. 1, the image server106may make the image224available for display over the network104to multiple independent users using clients110a-110nasking the independent users to make image adjustments to the image including, but not limited to a reorientation of the image224. At the same or nearly the same time, the image aligner118may perform its own machine analysis on the image224to determine, for example, whether or not the image224should be reoriented. The users at the clients110a-110nmay access the image224using the respective browsers120a-120nand may make adjustments to the image224. The image adjustment information is sent from the clients110a-110nover the network104to the image aligner118, where the image adjustment information is accumulated and analyzed.

As discussed above, image adjustment information may be sent back to the image capture device202based on the independent users input, the machine corrections of the image aligner118, or a combination of the independent users input and the machine corrections. Referring toFIG. 2B, the exemplary image capture device202is illustrated. The display222shows the image adjustment information226that has been sent by the image server106back to the image capture device202. As one can see from the illustration, the image server106has sent back information showing a reorientation of the original image224such that it now appears to have been rotated clockwise a number of degrees so that the image appears to be in a proper orientation. The user of the image capture device202is given the option of whether or not to accept the image adjustment information226. If accepted, then the original image224may be modified and stored on the image capture device202as modified. If not accepted, then the original image224may remain on the image capture device202but now the user has information that may be used to retake the image and to adjust the digital camera so that a proper orientation of the subject is taken.

FIG. 2Billustrates merely one type of feedback provided from the independent users to the image capture device202. As discussed above, the image adjustments and feedback may be a line or border on the display222that illustrates how the independent users and/or the image aligner118think the image224should be rotated. Other types of feedback may be provided as well.

In one exemplary implementation, the image224may include metadata including GPS information that is sent along with the image over the network104to the image server106. The image server106may access similar images from the image database108based on the GPS metadata and may compare the image224to the previously stored images. The image server106may calculate a difference in the GPS locations and, based on the difference, may provide feedback to the image capture device202that the user move a specific distance in a specific direction to take a better or different image of the subject. In this manner, users may take advantage of a repository of images and potentially images of landmarks that many users have captured. If many users have captured the image from a particular spot or location, then that information may be used to suggest to the user to move to that location from their current position to take the picture.

FIG. 3is an exemplary block diagram of an illustrative image capture device302for capturing images, sending the images over a network to an image server and receiving image adjustments and/or image feedback in substantially real time. The image capture device302may include, as discussed above with respect to image capture devices102and202ofFIGS. 1,2A and2B, a digital camera, a cellular phone having a camera, a PDA having a camera, or other device capable of capturing images.

The image capture device302includes a display304that enables a user to interact graphically with the device using a graphical user interface (GUI) on the display304. The display304may act as an image viewfinder as the user is trying to capture an image of a subject. The display304also enables captured images to be displayed and images adjustments and other feedback related to the images to be displayed.

In one example, the display304is a touch screen display, so that the user may directly press upon images to manipulate them on the display304. Input to the device302also may be provided using a button interface306and a keyboard (not shown) or a phone pad (not shown). The button interface306may be configured to enable the user to toggle through various application menus and settings as well as to make selections.

The image capture device302may include an image capture button307and a lens adjustment button309. The image capture button307may be configured to have different positions (e.g., a halfway depressed position and a fully depressed position) such that one position may focus the lens on a subject and another position may cause the device to capture an image of the focused subject. The lens adjustment button309may be configured to adjust the lens between a wide angle position and a zoom position, either by physically or digitally adjusting the lens.

As discussed above with respect toFIG. 1, the image capture device302includes an image capture module312. The image capture module312may include one or more applications that enable the device to capture digital images. The device302may communicate with other devices or a network through a communication module314, as discussed above with respect toFIG. 1. The communication module314may include a wired and/or a wireless interface. The wireless interface may provide for communication by the device302with messaging services such as text messaging, e-mail, and telephone voice mail messaging. In addition, the wireless interface may support downloads and uploads of content and computer code over a wireless network. The wireless interface may additionally provide for voice communications in a wireless network in a familiar manner. As one example, the wireless interface may be used to interact with Internet web pages that are to be displayed on display304. The wireless interface also may communicate captured image and related metadata over a network and receive image adjustments and other image information from the network.

The image capture device302also includes a processor316, as discussed above with respect toFIG. 1. The processor316may execute instructions and coordinate the image capture module312and the communication module314. The processor316may execute instructions stored in memory317, including instructions provided by a variety of applications318stored on the device302. The processor316may comprise multiple processors responsible for coordinating interactions among other device components and communications over an I/O interface319. The processor316also may be responsible for managing internal alerts generated by the device302. For example, the processor316may be alerted by the input manager320(which may operate on the processor) when a user touches the display304or image capture button307so as to take the device302out of a sleep mode state.

The device302also includes memory322,324storing various data. The memory322,324may comprise random access memory where computer instructions and data are stored in a volatile memory device for execution by the processor316. The memory322,324also may include read-only memory where invariant low-level systems code or data for basic system functions such as basic input and output, and startup instructions reside. In addition, the memory322,324may include other suitable types of memory such as programmable read-only memory, erasable programmable read-only memory, electrically erasable programmable read-only memory, hard disks, and removable memory such as microSD cards or Flash memory.

The memory322,324may, in one example, include image memory322, which may store captured images and related metadata and user data memory324, which may story various parameters describing preferences for a user of the device302. The user data memory324may, for example, store and provide ordinary user pass codes, user identifying information (e.g., name, address, telephone numbers, and e-mail addresses), and other such information.

A display manager326is provided to supervise and coordinate information to be shown on the display304. The display manager326, for example, may be provided with data relating to information to be displayed and may coordinate data received from various different applications or modules. As one example, display manager326may receive data for overlapping windows on a windowed display and may determine which window is to be on top and where the lower window or windows is to be cut.

Device inputs such as presses on the touch screen304may be processed by the input manager320. For example, the input manager320may receive information regarding input provided by a user on touch screen304, and may forward such information to various applications or modules. For example, the input manager320may cooperate with the display manager326so as to understand what onscreen elements a user is selecting when they press on the touch screen304.

FIG. 4Ashows an example screen shot that may be displayed to one or more clients110a-110nusing browsers120a-120n. In general, an image captured by an image capture device (e.g., image capture device102ofFIG. 1) may be communicated over a network (e.g., network104ofFIG. 1) and displayed to multiple independent users such as clients110a-110n.

The display404shows an image406as circumscribed in a circle. Such a circumscribing of the image may have been performed by an image server (e.g., the image server106ofFIG. 1) that provided the image to the clients110a-110n. In other implementations, the image406may not be displayed as circumscribed in a circle, but instead may be displayed in a rectangular or other digital photo format shape.

Several components are displayed to permit appropriate interaction by an independent user with the image406. For example, instructions may be provided to the user telling the user to rotate the image406to an upright position. Such rotation may be performed by the positioning of a slider control410located in a slider bar408. In an initial position, the slider control410may be located at the center of the slider bar408. The slider control410may be made active and may be moved by operation of a mouse or by pressing a key at one of the clients110a-110n. In one exemplary implementation, the slider control410and the slider bar408are implemented as part of the touch screen. In certain circumstances, such as for the pressing of keys such as, for example, hard keys or soft keys, each selection of the keys may result in the image406rotating a set number of degrees. Similarly, the movement of the slider control410may result in the image406rotating a set number of degrees. When the user has rotated the image406to what the user believes is a proper orientation, the user may press a submit button412on the display404. Such selection of the submit button412may cause the image adjustment information, such as the angle of rotation, and other feedback to be submitted over the network104to the image server106.

A text box414also may be provided so that the independent users at the clients110a-110nmay provide other feedback related to the image, as well. Text or other information may be entered into the text box414and the selection of the submit button412may cause that information to be sent over the network104to the image server106as well. The submitted information may be accumulated by the image server106and may be communicated back to the image capture device102in one form or another.

In one exemplary implementation, the image406may be grabbed directly by operation of a mouse or other input device controlling a pointer or cursor. The image406may be grabbed and rotated to a proper orientation and the information submitted to the image server106upon selection of the submit button412.

In one exemplary implementation, the image406may be presented multiple clients110a-110nin a game setting so that the users can play a game and make adjustments to the image406at the same time. For example, the image406may be presented to multiple independent users at clients110a-110nin an online game setting, where as part of the game the image406is presented to the users and they are asked to orient the image to a proper orientation so that it is upright. Users may score points if they match the same orientation as their opponent. This presentation of the image406to other independent users may be done because humans may be better than machines at determining a proper orientation for an image. Then, this accumulated information provided by humans may be provided back to the image capture device in substantially real time.

FIG. 4Bshows an example screen shot of an image displayed to one of the clients110a-110n, where the client is a mobile device482. In this exemplary implementation, the mobile device482may include a touch screen display. The image484is shown as circumscribed inside a circle. Instructions may be provided telling the user to rotate the image until it is upright. In this example, the image484may be rotated by touching the image484and moving in either a clockwise or a counter clockwise position. When the image484is reoriented to the upright position, the user may select an enter or submit button, such as button486or button488. The submitted reorientation is communicated over the network104to the image server106so that the image adjustment may be accumulated with other adjustments from other users and ultimately provided back to the image capture device.

FIG. 5is a swim lane diagram of an example process500for providing image feedback. An image capture device may capture an image (502) and submit the captured image to the image server (504). In this manner, for example, a user of the image capture device may take a digital photo and seek immediate feedback related to the image from one or more independent users. In one exemplary implementation, the image may be adjusted in one or more ways by an image aligner at the image server (506). The image aligner may, for example, attempt to reorient the image without human interaction. The adjustments made by the image aligner may be compared and/or combined with feedback from human interaction with the image. Alternatively, the image aligner may not attempt to make adjustments to the image and the image may only be sent to independent users (508).

The image is displayed to one or more independent users (510). For example, the image may be displayed on the browsers120a-120nof the clients110a-110n. The browsers may be on personal computers and/or on mobile computing devices. The users may access the image by browsing to a website that displays images for the purpose of enabling users to make corrections to the images. In one exemplary implementation, the image may be displayed to users as part of a game in an online game setting.

The independent users make image adjustments (512). For example, the users may reorient the image to place the image in a proper orientation. The users may provide other image adjustments such as changing the brightness (e.g., lightening or darkening) the image, adjusting the color of the image, and the like. The image adjustments are sent to the image server from the clients110a-110n(514). The image server accumulates and statistically analyzes the image adjustments (516). For instance, the image server may use statistical analysis to determine whether there is a valid sample of independent users and to determine the results from the independent users.

In one exemplary implementation, the image aligner may combine the adjustments made by the image aligner (e.g., a first correction angle) with adjustments made by the independent users (e.g., a second correction angle) that results in a combined image adjustment (e.g., a final correction angle). Also, the image aligner may calculate a confidence level for the image adjustment. For instance, different confidence levels may be based on reaching predetermined numbers of independent users. The confidence levels also may be based on the statistical correlation and similarity of the adjustments by the independent users, either alone or in combination with the adjustments calculated by the image aligner.

The image adjustment(s) and/or other image feedback (e.g., confidence level) is sent to the image capture device (518) and the image capture device receives the image adjustment information (520). The image adjustment(s) may be presented to the user on the image capture device in a number of different ways. For example, if there is more than one option or more than one image adjustment, they may be presented on the image capture device as a list or menu of options. The image adjustment may include presenting the image as adjusted and asking for acceptance of the adjust image. If the image adjustment is a reorientation of the image, then a framed border showing the corrected tilt or a horizontal line showing the corrected tilt may be presented. The user of the image capture device may be given the option to accept or reject the image adjustment(s).

The confidence level of the image adjustment also may be received and displayed on the image capture device. In one exemplary implementation, the confidence level may be displayed using a rating system such as, for example, a number of stars. For instance, five out of five stars may indicate the highest level of confidence in the suggested adjustment(s) and one out of five stars may indicate the lowest level of confidence in the suggested adjustment(s). Other rating scales and indicators may be used.

The memory604stores information within the computing device600. In one implementation, the memory604is a volatile memory unit or units. In another implementation, the memory604is a non-volatile memory unit or units. The memory604may also be another form of computer-readable medium, such as a magnetic or optical disk.

The processor652can execute instructions within the computing device650, including instructions stored in the memory664. The processor may be implemented as a chipset of chips that include separate and multiple analog and digital processors. The processor may provide, for example, for coordination of the other components of the device650, such as control of user interfaces, applications run by device650, and wireless communication by device650.

Processor652may communicate with a user through control interface658and display interface656coupled to a display654. The display654may be, for example, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display) or an OLED (Organic Light Emitting Diode) display, or other appropriate display technology. The display interface656may comprise appropriate circuitry for driving the display654to present graphical and other information to a user. The control interface658may receive commands from a user and convert them for submission to the processor652. In addition, an external interface662may be provide in communication with processor652, so as to enable near area communication of device650with other devices. External interface662may provide, for example, for wired communication in some implementations, or for wireless communication in other implementations, and multiple interfaces may also be used.

The memory664stores information within the computing device650. The memory664can be implemented as one or more of a computer-readable medium or media, a volatile memory unit or units, or a non-volatile memory unit or units. Expansion memory674may also be provided and connected to device650through expansion interface672, which may include, for example, a SIMM (Single In Line Memory Module) card interface. Such expansion memory674may provide extra storage space for device650, or may also store applications or other information for device650. Specifically, expansion memory674may include instructions to carry out or supplement the processes described above, and may include secure information also. Thus, for example, expansion memory674may be provide as a security module for device650, and may be programmed with instructions that permit secure use of device650. In addition, secure applications may be provided via the SIMM cards, along with additional information, such as placing identifying information on the SIMM card in a non-hackable manner.

The memory may include, for example, flash memory and/or NVRAM memory, as discussed below. In one implementation, a computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer- or machine-readable medium, such as the memory664, expansion memory674, or memory on processor652, that may be received, for example, over transceiver668or external interface662.