Patent Publication Number: US-2023144172-A1

Title: User interface for camera focus

Description:
TECHNICAL FIELD 
     The disclosure relates to capture or image processing. 
     BACKGROUND 
     A camera device includes one or more cameras that capture frames (e.g., images). Examples of the camera device include stand-alone digital cameras or digital video camcorders, camera-equipped wireless communication device handsets, such as mobile telephones having one or more cameras, cellular or satellite radio telephones, camera-equipped personal digital assistants (PDAs), computing panels or tablets, gaming devices, computer devices that include cameras, such as so-called “web-cams,” smartwatch, a device equipped with own camera, a device configured to control another device equipped with a camera, or any device with digital imaging or video capabilities. 
     A camera device processes the captured frames and outputs the frames for display. In some examples, the camera device controls the exposure, focus, and white balance to capture high quality images. 
     SUMMARY 
     In general, this disclosure describes techniques for controlling a camera focus level (e.g., position of a lens of the camera to focus at the desired depth), including techniques for generating a user interface with which a user interacts to control the camera focus level. As described in more detail, in response to a user selection of a region to focus in a preview image, one or more processors may determine whether there is image content at different depths in the region. If there is image content at different depths in the region, the one or more processors may output an alternative version (e.g., zoomed in version) of the image content in the region, and receive a subsequent user selection within the alternative version. The one or more processors may control the focus level for a camera (e.g., lens position of the camera) based on the subsequent user selection. However, if there is image content at a single depth (e.g., not image content at different depths) in the region, the one or more processors may not output an alternative version of the image content in the region, and may control the focus level for the camera based on the user selection (i.e., no subsequent user selection is needed). 
     In some cases, a user selection of a region to control the focus level of the camera may cover a relatively large region. For example, the user may touch the screen presenting the preview image to define a region. On a relatively small screen, the touch on the screen may encompass a relatively large amount of image content (e.g., the area is proportional to a ratio between the size of the screen and the user perceived size of the fingertip, which may be how the user touched the screen). In such cases, it may be undefined exactly where the focus of the camera should be, especially in cases where there is image content at different depths. That is, the depth of the focus may be unknown as there is image content at different depths in the user selected region. By zooming in on image content of the region where there is image content of different depths, the user may be able to better select where the camera should focus because the image content of the region appears much larger on the screen. However, if there is image content at a single depth (e.g., there is not image content at different depths), then the focus can be adjusted (e.g., by changing the lens position) to the depth of the image content in the user selected region without needing to zoom in on the image content of the region. In this way, the example techniques may improve the operation of controlling focus level on a camera with a practical application to selectively provide alternative versions to better select the focus depth in cases where there is image content at different depths. 
     In one example, a device for image capture includes: a memory configured to store a preview image; and one or more processors coupled to the memory and configured to: receive a user selection to focus at a region of the preview image stored in the memory; determine whether there is image content at different depths in the region; based on the determination that there is image content at different depths in the region, output an alternative version of the image content in the region; receive a subsequent user selection within the alternative version; and control a focus level for a camera based on the subsequent user selection. 
     In one example, a method for image capture includes: receiving a user selection to focus at a region of the preview image stored in the memory; determining that there is image content at different depths in the region; based on the determination that there is image content at different depths in the region, outputting an alternative version of the image content in the region; receiving a subsequent user selection within the alternative version; and controlling a focus level for a camera based on the subsequent user selection. 
     In one example, a computer-readable storage medium storing instructions thereon that when executed cause one or more processors to: receive a user selection to focus at a region of the preview image stored in the memory; determine that there is image content at different depths in the region; based on the determination that there is image content at different depths in the region, output an alternative version of the image content in the region; receive a subsequent user selection within the alternative version; and control a focus level for a camera based on the subsequent user selection. 
     The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description, drawings, and claims. 
    
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
         FIG.  1    is a block diagram of a device configured to perform one or more of the example techniques described in this disclosure. 
         FIG.  2    is a block diagram illustrating the central processing unit (CPU) and system memory of the device of  FIG.  1    in further detail. 
         FIG.  3    is a conceptual diagram illustrating an example of a device displaying image content and a user selection of a region. 
         FIGS.  4 A and  4 B  are conceptual diagrams illustrating focus set at different depths. 
         FIG.  5    is a conceptual diagram illustrating an example of a user interface for touch focus assist mode. 
         FIG.  6    is a conceptual diagram illustrating an example of a user interface for manual focus assist mode. 
         FIGS.  7 A and  7 B  are conceptual diagrams illustrating an example of a user interface with blurring. 
         FIG.  8    is a flowchart illustrating one or more example techniques of operation. 
         FIG.  9    is a flowchart illustrating one or more example techniques of operation. 
         FIG.  10    is a flowchart illustrating one or more example techniques of operation. 
     
    
    
     DETAILED DESCRIPTION 
     The example techniques described in this disclosure relate to camera focus (e.g., depth where a camera should focus for image or video capture). For some focus techniques of a camera, a user selects a region where to focus. For example, during preview mode, a screen displays image content to be captured. A preview image may include the image content. The user may touch on the screen at the region of the preview image where a camera is to focus. However, in some examples, there may be image content at different depths in the user selected region (e.g., where the user touched). In such cases, it may be unclear the depth at which the focus is to be set (e.g., it may be unclear the focus level, and what the focus level should be adjusted to). 
     In one or more examples, in response to a user selection of a region of the preview image where to focus, one or more processors may determine if there is image content at multiple depths in the selected region. If there is image content at multiple depths, the one or more processors may implement a focus assist process to allow the user to more accurately select the focus depth and the image content on which to focus. If, however, there is image content at only one depth, the one or more processors may control the focus level so that the focus is at the depth and region of the selected region. 
     In cases where there is image content at multiple depths, in some examples, the screen may present an alternative version of the image content. As one example, the alternative version of the image content may be a zoomed in image content of the selected region so that the selected region appears larger. In this alternative version of the image content, the user may then again select the region where to set the depth. For instance, in the zoomed in version of the image content, the user may again select the region of where to set the depth giving the user a more precise way in which to select the focus depth. 
     As another example, after presenting the alternative version of the image content, the user may manually adjust the focus of the camera until the desired image content is in focus. In some examples, for manually adjusting the focus level (e.g., depth at which the camera is to focus), the screen may display a histogram that illustrates the number of pixels that are further or closer than the focus depth. The user may utilize the histogram to select if the user would like to focus on image content closer to or further away from the focal point. However, the example techniques do not require a histogram to be present. 
     Accordingly, one or more processors may be configured to receive a user selection to focus at a region of a preview image and determine whether there is image content at different depths in the region. Based on there being image content at different depths in the region, the one or more processors may output an alternative version (e.g., zoomed in version) of the image content in the region. In such examples, the one or more processors may receive a subsequent user selection within the alternative version and control (e.g., set or adjust) a focus level (e.g., lens position) for a camera based on the subsequent user selection. However, based on there not being image content at different depths in the region, the one or more processors may control a focus level for the camera based on the user selection (e.g., there may be no outputting of an alternative version of the image content or receiving a subsequent user selection). For example, to control the focus level, the one or more processors may adjust the position of the lens of the camera without receiving the subsequent user selection. 
     There may be various examples of the subsequent user selection. As one example, the subsequent user selection may be a user selection of a sub-region within the region. For instance, because the image content of the region is zoomed in, as an example, the user may be able to better select a sub-region that defines the depth of the focus of the camera. As another example, the subsequent user selection may be a user selection to control the focus level manually (e.g., manually focus position of the lens). For instance, the user may manually adjust the focus level to the desired focus depth. 
       FIG.  1    is a block diagram of a device configured to perform one or more of the example techniques described in this disclosure. Examples of camera device  10  include stand-alone digital cameras or digital video camcorders, camera-equipped wireless communication device handsets, such as mobile telephones having one or more cameras, cellular or satellite radio telephones, camera-equipped personal digital assistants (PDAs), computing panels or tablets, watches, gaming devices, computer devices that include cameras, such as so-called “web-cams,” or any device with digital imaging or video capabilities. 
     As illustrated in the example of  FIG.  1   , camera device  10  includes camera  12  (e.g., having an image sensor and lens), camera processor  14  and local memory  20  of camera processor  14 , a central processing unit (CPU)  16 , a graphical processing unit (GPU)  18 , user interface  22 , memory controller  24  that provides access to system memory  30 , and display interface  26  that outputs signals that cause graphical data to be displayed on display  28 . Although the example of  FIG.  1    illustrates camera device  10  including one camera  12 , in some examples, camera device  10  may include a plurality of cameras, such as for omnidirectional image or video capture. 
     Also, although the various components are illustrated as separate components, in some examples the components may be combined to form a system on chip (SoC). As an example, camera processor  14 , CPU  16 , GPU  18 , and display interface  26  may be formed on a common integrated circuit (IC) chip. In some examples, one or more of camera processor  14 , CPU  16 , GPU  18 , and display interface  26  may be in separate IC chips. Additional examples of components that may be configured to perform the example techniques include a digital signal processor (DSP), a vector processor, or other hardware blocks used for neural network (NN) computations. Various other permutations and combinations are possible, and the techniques should not be considered limited to the example illustrated in  FIG.  1   . 
     The various components illustrated in  FIG.  1    (whether formed on one device or different devices) may be formed as at least one of fixed-function or programmable circuitry such as in one or more microprocessors, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), digital signal processors (DSPs), or other equivalent integrated or discrete logic circuitry. Examples of local memory  20  and system memory  30  include one or more volatile or non-volatile memories or storage devices, such as random access memory (RAM), static RAM (SRAM), dynamic RAM (DRAM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory, a magnetic data media or an optical storage media. 
     The various units illustrated in  FIG.  1    communicate with each other using bus  32 . Bus  32  may be any of a variety of bus structures, such as a third generation bus (e.g., a HyperTransport bus or an InfiniBand bus), a second generation bus (e.g., an Advanced Graphics Port bus, a Peripheral Component Interconnect (PCI) Express bus, or an Advanced eXtensible Interface (AXI) bus) or another type of bus or device interconnect. The specific configuration of buses and communication interfaces between the different components shown in  FIG.  1    is merely exemplary, and other configurations of camera devices and/or other image processing systems with the same or different components may be used to implement the techniques of this disclosure. 
     Camera processor  14  is configured to receive image frames (or simply “images”) from camera  12 , and process the images to generate output images for display. CPU  16 , GPU  18 , camera processor  14 , or some other circuitry may be configured to process the output image that includes image content generated by camera processor  14  into images for display on display  28 . In some examples, GPU  18  may be further configured to render graphics content on display  28 . 
     In some examples, camera processor  14  may be configured as an image processing pipeline. For instance, camera processor  14  may include a camera interface that interfaces between camera  12  and camera processor  14 . Camera processor  14  may include additional circuitry to process the image content. Camera processor  14  outputs the resulting images with image content (e.g., pixel values for each of the image pixels) to system memory  30  via memory controller  24 . 
     CPU  16  may comprise a general-purpose or a special-purpose processor that controls operation of camera device  10 . A user may provide input to camera device  10  to cause CPU  16  to execute one or more software applications. The software applications that execute on CPU  16  may include, for example, a media player application, a video game application, a graphical user interface application or another program. The user may provide input to camera device  10  via one or more input devices (not shown) such as a keyboard, a mouse, a microphone, a touch pad or another input device that is coupled to camera device  10  via user interface  22 . 
     One example of the software application is a camera application. CPU  16  executes the camera application, and in response, the camera application causes CPU  16  to generate content that display  28  outputs. GPU  18  may be configured to process the content generated by CPU  16  for rendering on display  28 . For instance, display  28  may output information such as light intensity, whether flash is enabled, and other such information. The user of camera device  10  may interface with display  28  to configure the manner in which the images are generated (e.g., with or without flash, focus settings, exposure settings, and other parameters). 
     As one example, after executing the camera application, camera device  10  may be considered to be in preview mode. In preview mode, camera  12  outputs image content to camera processor  14  that performs camera processing and outputs image content to system memory  30  that display interface  26  retrieves and outputs on display  28 . In preview mode, the user, via display  28 , can view the image content that will be captured when the user engages a button (real or on display) to take a picture. As another example, rather than taking a still image (e.g., picture), the user may record video content (e.g., a series of images). During the recording, the user may be able to view the image content being captured on display  28 . 
     In this disclosure, a preview image may be referred to as an image that is generated in preview mode. For instance, in preview mode, the image that camera  12  outputs and stores (e.g., in local memory  20  or system memory  30 ) for processing by camera processor  14  or the image that camera processor  14  generates and stores (e.g., in local memory  20  or system memory  30 ) may be referred to as a preview image. In general, a preview image may be an image generated in preview mode prior to capture and long-term storage of the image. 
     During preview mode or recording, camera device  10  (e.g., via CPU  16 ) may control the way in which camera  12  captures images (e.g., before capture or storing of image). This disclosure describes the examples techniques as being performed by CPU  16 . However, the example techniques should not be considered limited to CPU  16  performing the example techniques. For instance, CPU  16  in combination with camera processor  14 , GPU  18 , a DSP, a vector processor, and/or display interface  26  may be configured to perform the example techniques described in this disclosure. For example, one or more processors may be configured to perform the example techniques described in this disclosure. Examples of the one or more processors include camera processor  14 , CPU  16 , GPU  18 , display interface  26 , a DSP, a vector processor, or any combination of one or more of camera processor  14 , CPU  16 , GPU  18 , display interface  26 , the DSP, or the vector processor. 
     CPU  16  may be configured to control the exposure and/or focus to capture visually pleasing images. For example, CPU  16  may be configured to generate signals that control the exposure, focus, and white balance, as a few non-limiting examples, of camera  12 . CPU  16  may be configured to control the exposure, focus, and white balance based on the preview images received from camera processor  14  during preview mode or recording. In this way, for still images, when the user engages to take the picture, the exposure, focus, and white balance are adjusted (e.g., the parameters for exposure, focus, and possibly white balance are determined before image capture so that the exposure, focus, and white balance can be corrected during the image capture). For recording, the exposure, focus, and white balance may be updated regularly during the recording. 
     This disclosure describes example techniques for controlling focus level of camera  12 , such as examples of user interfaces with which a user may interact to control the focus level of camera  12  (e.g., adjust where the lens for camera  12  is to be located to focus on the desired depth). For focus, CPU  16  may display the preview image on display  28 . A user may then select the region where to focus camera  12 , and in response, CPU  16  may control the depth of the focus to the depth of the region selected by user (e.g., adjust the lens of camera  12  to the focus on the desired depth). 
     However, there may be various instances in which controlling the depth of the focus to be the depth of the region selected by the user is undefined. Within the user selected region, there may be image content at different depths, and it may be unclear to which image content camera  12  should focus. As an example, display  28  may be relatively small (e.g., such as being a display of a so-called smart watch). The user may select a region on a preview image displayed on display  28  via a touch. e.g., on a touchscreen. Due to the relatively small size of display  28 , the touch from the user may cover a relatively large region of image content of the preview image. Within this relatively large region, there may be image content are different depths, and the depth of focus may be unclear. 
     In one or more examples described in this disclosure, CPU  16  may be configured to determine whether there is image content at different depths at a region of the preview image. Based on the determination that there is image content at different depths in the region, CPU  16  may output an alternative version of the image content in the region. As one example, CPU  16  may output a zoomed in version of the image content in the region. 
     For ease of example, CPU  16  is described as outputting a zoomed in version of the image content in the region. However, the example techniques are not so limited. In some examples, CPU  16  may output a blurred version of the image content in the region, where the areas that are in focus are not blurred and areas not in focus are blurred. There may be various other ways in which to output an alternative version of the image content. 
     CPU  16  may then receive a subsequent user selection within the alternative version, and may adjust a focus level (e.g., depth of focus) of camera  12  based on the subsequent user selection. However, if there is image content at single depth (e.g., if there is not image content at different depths) in the region, CPU  16  may not output an alternative version of the image content in the region. In such examples, CPU  16  may control (e.g., set or adjust) the focus level (e.g., depth of focus) of camera  12  based on the original user selection (e.g., no subsequent user selection is needed). 
     In other words, a condition may be whether there is image content at different depths in the region. In response to a condition being satisfied (e.g., there is image content at different depths in the region), CPU  16  may output an alternative version of the image content in the region. In response to a condition not being satisfied (e.g., there is not image content at different depths in the region), CPU  16  may not output an alternative version of the image content in the region. 
     In some examples, the alternative version of the region may encompass the entirety of the area of display  28  that is reserved to display image content. For instance, the zoomed in version (e.g., an example of the alternative version) may be the image content of the region displayed as larger objects. In this case, image content that is outside of the region may not be viewable on display  28 . There may be various ways to generate the zoomed in version of the region, such as upsampling, and the example techniques are not limited to any zooming techniques. 
     There may be various ways in which CPU  16  may determine whether there is image content at different depths in the region. As one example, CPU  16  may determine relative depths of objects in the preview image based on disparity between two images. For instance, sensors within camera  12  (or possibly some other sensors) may capture two images of image content for purposes of determining relative depth. The images captured for determining relative depths need not necessarily be high resolution images, but it may be possible for the pictures to be high resolution. That is, the images captured by the sensors for determining the relative depths may have the same resolution as the preview image, but the example techniques are not so limited. 
     The relative disparity of image content in the two images may be indicative of the depth of the objects. Utilizing the relative disparity, CPU  16  may generate a depth map that indicates the relative depths of objects in the first image. For instance, the depth map may indicate how far objects are from camera  12 , and based on the depths of the objects, CPU  16  may determine whether there is image content within the region at different depths. 
     As another example, CPU  16  may generate a defocus map, which is another example of a depth map, sometimes also called a PDAF (phase detection auto focus) pixels based depth map or focus map. The defocus map may be similar to the depth map described above; however, the defocus map indicates the location of the objects relative to a current focus depth of camera  12  (i.e., relative to a distance of the current focal point). For instance, the defocus map may indicate whether pixels in the preview image are for objects closer to camera  12  from the current focus depth (e.g., current focal point) or further from the current focus depth. In some examples, the PDAF pixels based depth map may be generated using machine-learning algorithms. 
     As another example, camera  12  or camera device  10  may include time of flight (ToF) lasers and sensors. CPU  16  may determine the amount of time it takes for light to travel from the ToF lasers to the objects and reflect back to the ToF sensors to determine the depths of the objects, and generate a depth map based on the depths of the objects. Based on the depth map, CPU  16  may determine whether there is image content at different depths within the region. 
     The above describes some example techniques that CPU  16  may utilize to determine if there is image content at different depths in a region. However, the example techniques of this disclosure should not be considered limited to such examples. As additional techniques CPU  16  may utilize stereo depth or structured light to determine if there is image content at different depths in a region. 
     After CPU  16  outputs the alternative version of the image content in the region (e.g., after display  28  displays the alternative version of the image content), CPU  16  may receive a subsequent user selection within the alternative version. There may be various examples of the subsequent user selection within the alternative version. 
     As one example, where the alternative version is a zoomed in version of the image content, the subsequent user selection within the zoomed in version of the image content in the region may be a user selection that selects a sub-region within the region. For instance, the zoomed in version of the image content in the region may be a larger sized version of the image content. Within this larger sized version of the image content displayed on display  28 , the user may a touch user selection (e.g., tap) of an area, which would be a sub-region within the region. 
     As another example, the subsequent user selection within the alternative version of the image content in the region may be a user selection to manually control the focus level. For instance, the user may swipe (e.g., right or left) on display  28 , move a slider on display  28 , hold down and drag a dial on display  28 , as a few examples of manual user selection to control the focus to manually adjust a depth of focus. In some examples, the user may manipulate a physical controller, such as a dial, slider, or rotate a button or “crown” for manual user selection to control the focus manually. 
     In some examples, CPU  16  may output a histogram, displayed on display  28 , illustrating an amount of image content that is closer to or further away from a focal point during the subsequent user selection. For instance, as the user is swiping to manually adjust the focus level, the histogram may indicate how many samples are closer to or further away from the focal point that the user is manually adjusting. 
     CPU  16  may control a focus level of camera  12  based on the subsequent user selection. For instance, CPU  16  may control a depth of focus for camera  12 . As one example, CPU  16  may control the depth of focus for camera  12  based on the sub-region selected as part of the subsequent user selection. As another example, CPU  16  may control the depth of focus for camera  12  based on the manually adjusted focus level. 
     Camera  12  may then capture an image at the focus level for camera  12  (e.g., at the lens position set by CPU  16 ). For instance, the user may interact with camera device  10  to cause camera device  10  to capture an image (e.g., image for long-term storage), and camera  12  may capture the image at the focus level. 
     In some examples, camera  12  may capture one image at the focus level. In some examples, camera  12  may capture multiple images at the focus level, and the user may select one or more images to keep. For instance, system memory  30  may store the multiple images, and the user may view them offline (e.g., at some later time) and determine which images to keep and/or which images to perform post-processing (e.g., manipulate). 
     Memory controller  24  facilitates the transfer of data going into and out of system memory  30 . For example, memory controller  24  may receive memory read and write commands, and service such commands with respect to memory  30  in order to provide memory services for the components in camera device  10 . Memory controller  24  is communicatively coupled to system memory  30 . Although memory controller  24  is illustrated in the example of camera device  10  of  FIG.  1    as being a processing circuit that is separate from both CPU  16  and system memory  30 , in other examples, some or all of the functionality of memory controller  24  may be implemented on one or both of CPU  16  and system memory  30 . 
     System memory  30  may store program modules and/or instructions and/or data that are accessible by camera processor  14 , CPU  16 , and GPU  18 . For example, system memory  30  may store user applications (e.g., instructions for the camera application), resulting frames from camera processor  14 , etc. System memory  30  may additionally store information for use by and/or generated by other components of camera device  10 . For example, system memory  30  may act as a device memory for camera processor  14 . 
       FIG.  2    is a block diagram illustrating the central processing unit (CPU) and system memory of the device of  FIG.  1    in further detail. As illustrated in  FIG.  2   , camera  12  includes lens  34  and sensor  36 . CPU  16  may be configured to execute focus application  38 . 
     In one or more examples, CPU  16  may be configured to generate depth map  40  that indicates depths of samples in a preview image. CPU  16  may store the depth map  40  in system memory  30 . CPU  16  may generate depth map  40  utilizing various techniques such as based on disparity of pixels in images having same image content, based on relative distance to a focal point, or based on ToF sensors, as a few non-limiting examples. 
     In one or more examples, system memory  30  may store the object code for focus application  38  that CPU  16  retrieves and executes. In one or more examples, rather than being software applications executing on CPU  16 , CPU  16  may include specialized hardware to perform the operations of controlling the focus level for camera  12 . 
     In one or more examples, light enters through lens  34  and is received by sensor  36 . Focus application  38  may modify the location of lens  34  within camera  12  so as to adjust the focus of lens  34  (e.g., control the focus level by adjusting the position of lens  34 ). For instance, by modifying the location of lens  34 , focus application  38  may control the focal point to sensor  36 , and therefore control which portions of the image content will be in focus. In some examples, it may be possible to move the position of lens  34  to control the focal point. In this way, focus application may control a focus level (e.g., position of lens  34 ) for camera  12  based on the subsequent user selection. 
     To capture an image, the user may interact with camera device  10 . As described above, prior to capturing an image, display  28  may display a preview image (e.g., a preview of the image that is to be captured) for image capture and/or video capture. In accordance with examples described in this disclosure, the user may determine where to set the focus of camera  12  (e.g., where the position of lens  12  should be). System memory  30  may store the preview image. 
     For instance, focus application  38  may receive a user selection to focus at a region of the preview image stored in system memory  30 . One example of the user selection may be a touch (e.g., tap) by the user on display  28  where the user wants to focus camera  12  (e.g., what the focus level of camera  12  should be). In this example, CPU  16  may determine the coordinates of where the user touched display  28 , and determine that the region encompassed by where the user touched display  28  is the user selected region. The user selection technique being a “touch” or a “tap” is one example, and should not be considered limiting. The user may manually enter coordinates, select a region from a menu, etc. 
     In accordance with one or more examples described in this disclosure, focus application  38  may determine whether there is image content at different depths in the region. For example, focus application  38  may access depth map  40 . Focus application  38  may determine a region within depth map  40  that corresponds to the user selected region of the preview image. Based on the depth of the samples in the region, as indicated by depth map  40 , focus application  38  may determine whether there is image content at different depths in the region. 
     Based on the determination that there is image content at different depths in the region, focus application  38  may output an alternative version of the image content in the region. In some examples, rather than or in addition to focus application  38  outputting an alternative version of the image content, GPU  18  may be configured to output the alternative version of the image content. As another example, CPU  16  may execute a zoom application or function, and focus application  38  may call the zoom application, and the zoom application may output a zoomed in version (e.g., an example of the alternative version) of the image content in the region. Other ways in which to output the alternative version of the image content in the region are possible. Display  28  may be configured to display the alternative version of the image content in the region. 
     Whether there is image content at different depths in the region may be considered as a condition. For instance, in response to the condition being satisfied that there is image content at different depths in the region, CPU  16  and/or GPU  18  may output the alternative version of the image content in the region. In some examples, CPU  16  and/or GPU  18  may output the alternative version of the image content in the region only if there is image content at different depths in the region. For instance, only if the condition is satisfied that there is image content at different depth in the region, do CPU  16  and/or GPU  18  output the alternative version of the image content in the region. As an example, if the condition is not satisfied (i.e., there is not image content at different depths in the region), CPU  16  and/or GPU  18  may not output the alternative version of the image content in the region. 
     Focus application  38  may receive a subsequent user selection within the alternative version. There may be various examples of the subsequent user selection within the alternative version. As one example, focus application  38  may receive the subsequent user selection within the alternative version of the image content in the region that selects a sub-region within the region. For instance, the subsequent user selection within the alternative version of the image content in the region that selects the sub-region within the region may be a touch user selection that selects the sub-region within the region. As another example, focus application  38  may receive the subsequent user selection within the alternative version of the image content to control the focus manually. For instance, the subsequent user selection within the alternative version of the image content to control the focus manually may be a swipe user selection, moving a slider, holding down and dragging a dial, as a few examples. Examples of the selection of a sub-region and controlling of focus manually are described with respect to  FIGS.  5  and  6   . In some examples, the user may manipulate a physical controller, such as a dial, slider, or rotate a button or “crown” for manual user selection to control the focus manually. 
     Focus application  38  may control a focus level for camera  12  based on the subsequent user selection. For example, focus application  38  may set the depth of focus (e.g., set the focal point) for camera  12 . As an example, focus application  38  may control the position of lens  34  and/or sensor  36  to control the depth of focus. Camera device  10  may be configured to capture an image at the focus of camera  12 . For example, after setting the focus, the user may interact with camera device  10  to capture an image (e.g., still image or for video) with the focus of camera  12  at the focus level. 
       FIG.  3    is a conceptual diagram illustrating an example of a device displaying image content and a user selection of a region. For instance,  FIG.  3    illustrates camera device  10  as a watch, and display  28  is the face of the watch. In some examples, the sensor may be on the face of the watch. In this example, to control the focus level, the user may touch region  50 . 
       FIGS.  4 A and  4 B  are conceptual diagrams illustrating focus levels set at different depths.  FIGS.  4 A and  4 B  illustrate zoomed in versions of region  50  of  FIG.  3   . However, in  FIGS.  4 A and  4 B  the depth of focus is different (e.g., focal point is different). For example, in  FIG.  4 A , the position of lens  34  is at position  175 , which causes the depth of focus to be at the depth of the screw shown in the image. In  FIG.  4 B , the position of lens  34  is at position  207 , which causes the depth of focus to be at the depth of the spring shown in the image. 
     As illustrated with  FIGS.  4 A and  4 B , relying only on the touch by the user at region  50  ( FIG.  3   ) to define the depth of focus may not be sufficient to determine the focus level for camera  12 . For instance, with just the selection of region  50 , it may be unclear whether camera  12  is to focus on screw, and lens  34  should have lens position of 175, or whether camera  12  is to focus on the spring, and lens  34  should have lens position of 207. 
     Accordingly, in one or more examples, one or more processors (e.g., CPU  16 ) may be configured to determine whether there is image content at different depths at region  50 . If there is image content at different depths at region  50 , then CPU  16  may cause display  28  to display an alternative version (e.g., zoomed in version) of the image content. For instance, the alternative version of the image content may be such that it is easier for the user to properly identify where to focus camera  12 . If, however, there is image content at single depth (e.g., there is not image content at different depths) at region  50 , then CPU  16  may not cause display  28  to display an alternative version. 
       FIG.  5    is a conceptual diagram illustrating an example of a user interface for touch focus assist mode.  FIG.  5    illustrates a zoomed in version of region  50  of  FIG.  3   . The zoomed in version of region  50  is one example of an alternative version of region  50 . For touch focus assist mode, the user select sub-region  52  within the region  50 . As one example, a subsequent user selection within the alternative version (e.g., zoomed in version) of the image content in region  50  that selects sub-region  52  within region  50  may be a touch user selection that selects sub-region  52  within region  50 . As illustrated in  FIG.  5   , because the image content of region  50  is larger in the zoomed in version of region  50 , the user can better specify that the focus should be for sub-region  52 . 
       FIG.  6    is a conceptual diagram illustrating an example of a user interface for manual focus assist mode. Like  FIG.  5   ,  FIG.  6    illustrates a zoomed in version of region  50  of  FIG.  3   , which is an example of an alternative version of region  50 . For manual focus assist mode, display  28  may display indication  54  that shows the position of lens  34  and/or sensor  36 . The user may be able to see where the focus of camera  12  is based on which objects appear sharp and which objects look burry on display  28 . That is, CPU  16  may be configured to apply an exaggerated blur effect on regions that are not in focus and simulate a shallow depth of field effect for the purpose of highlighting which regions are focused accurately. 
     The user may swipe left and right, move a slider, hold and drag on the display, as one non-limiting example, to move the position of lens  34  and/or sensor  36  to change the depth of focus (e.g., focal point). As the user changes the position of lens  34  and/or sensor  36 , different objects on display  28  will become blurry, and previously blurry objects may come into focus and appear sharp. CPU  16  may control the focus of the camera based on where the user stopped swiping (e.g., where the user manually controls the focus). 
     In some examples, CPU  16  may be configured to output histogram  56  illustrating an amount of image content that is closer to and further away from a focal point during the user selection. For instance, as the user is providing a user selection (e.g., a swipe user selection, a move on slider user selection, hold and drag), the shape of histogram  56  may change to show how many samples are closer to (e.g., on the left of histogram  56 ) and how many samples are further away (e.g., on right of histogram  56 ) from a focal point. CPU  16  need not necessarily output histogram  56  in all examples. 
     In the example of  FIG.  6   , there is one histogram  56 . However, the example techniques are not so limited. In some examples, there may be two or more histograms. For instance, a first histogram may display relative depths of pixels for the full field of view (i.e., all the pixels that will be captured). A second histogram may display the relative depths of pixels that are currently in view (e.g., in the event that zoom in used to zoom into a portion for selecting depth). The first and second histograms may be displayed overlaid, or may be displayed separately. 
       FIGS.  7 A and  7 B  are conceptual diagrams illustrating an example of a user interface with blurring. In the above examples, one example of the alternative version of the image content is a zoomed in version of the image content. However, in some examples, rather than or in addition to outputting a zoomed in version of the image content, CPU  16  may output a blurred image, which is another example of the alternative version of the image content. 
     For instance, as illustrated in  FIGS.  7 A and  7 B , after a user selection to focus at a region of the preview image, and after determination that there is image content at different depths in the region, CPU  16  may output a blurred version of the image content in the region. In the blurred version, areas that are currently not in focus may be rendered (e.g., by GPU  18 ) with relatively heavy blurring. The blurred version may also be considered as simulating extremely shallow depth of field. This way, it is clear what areas are in focus and what areas are not in focus. 
     As an example, in  FIGS.  7 A and  7 B  the position of lens  34  and/or sensor  36  may be different. In  FIG.  7 A , pencil  58 A appears heavily blurred to indicate that the focus level of camera  12  is not at the depth of pencil  58 A. However, in  FIG.  7 B , pencil  58 B appears in focus and not blurred to indicate that the focus of camera  12  is at the depth of pencil  58 B. The user may manually adjust the focus of camera  12 , and in the examples of  FIGS.  7 A and  7 B , the blurriness may indicate to the user the focal point of camera  12 . When the focal point of camera  12  (e.g., depth of the focus of camera  12 ) is at the desired location, the user may stop changing the position of lens  34  and/or sensor  36 , and CPU  16  may control the focus level of camera  12  based on the position of lens  34  and/or sensor  36 . 
       FIG.  8    is a flowchart illustrating one or more example techniques of operation. For ease of description,  FIGS.  8 - 10    are described with respect to one or more processors that are configured to perform the example techniques. Examples of the one or more processors include any one or combination of CPU  16 , GPU  18 , display interface  26 , or any other processing component of camera device  10 . 
     In the example of  FIG.  8   , the one or more processors may receive user selection to focus at a region (e.g., region  50  of  FIG.  3   ) of a preview image stored in memory (e.g., system memory  30 ) ( 70 ). As one example, the user may touch or tap on display  28 , and the area encompassed by the touch may correspond to the region on which camera  12  is to focus. However, other techniques are possible such as by inputting information of the region based on coordinates, selecting from a menu, etc. In general, the one or more processors receiving the user selection may refer to the one or more processors receiving a signal generated by display  28  or some other unit that indicates the region that the user selected. 
     The one or more processors may determine whether there is image content at different depths in the region ( 72 ). As one example, the one or more processors may access depth map  40  from system memory  30 , and determine whether there is image content at different depths in the region based on depth map  40 . For instance, as described above, depth map  40  may indicate relative depths of samples in the preview image. If depth map  40  indicates that there are samples having different depths in the image content in the region, the one or more processors may determine that there is image content at different depths. If depth map  40  indicates that there are not samples having different depths in the image content in the region, the one or more processors may determine that there is not image content at different depths (e.g., there is image content at single depth). 
     Based on the determination that there is image content at different depths in the region, the one or more processors may output an alternative version of the image content in the region ( 74 ). As an example, in response to a condition being satisfied that there is image content at different depths in the region, the one or more processors may output the alternative version of the image content in the region. In some cases, the one or more processors may output the alternative version of the image content in the region only when there is image content at different depths in the region. 
     As one example, to output the alternative version of the image content in the region, the one or more processors may output a zoomed in version of the image content in the region. As another example, to output the alternative version of the image content in the region, the one or more processors may blur portions of the region that are not in focus. 
     The one or more processors may receive a subsequent user selection within the alternative version ( 76 ). Similar to above, the one or more processors receiving the subsequent user selection may refer to a signal generated by display  28  or some other unit that indicates the subsequent user selection. The one or more processors may control a focus level for camera  12  based on the subsequent user selection ( 78 ). For instance, the one or more processors may set a depth of focus for camera  12 . Camera device  10  may be configured to capture an image at the focus level of camera  12 . 
     As one example, to receive the subsequent user selection, the one or more processors may receive the subsequent user selection within the alternative version of the image content in the region that selects a sub-region within the region. In such examples, to control the focus level, the one or more processors may control the focus level based on the subsequent user selection of the sub-region. For instance, the subsequent user selection within the alternative version of the image content in the region that selects the sub-region within the region may be a touch user selection that selects the sub-region within the region. 
     As another example, to receive the subsequent user selection, the one or more processors may receive the subsequent user selection within the alternative version of the image content to manually control the focus level. In such examples, to control the focus level, the one or more processors may control the focus level based on manual controlling of the focus level by the user. For example, the subsequent user selection within the alternative version of the image content to manually control the focus level may be a user selection to manually adjust a depth of focus. In some examples, the one or more processors may be configured to output a histogram (e.g., histogram  56 ) illustrating an amount of image content that is closer to and further away from a focal point during the subsequent user selection. 
       FIG.  9    is a flowchart illustrating one or more example techniques of operation.  FIG.  9    illustrates an example where there is image content at single depth (e.g., there is not image content at different depths). For instance, assume that in  FIG.  8   , the user selection is a first user selection, the region is a first region, the focus level is a first focus level, and the preview image is a first preview image. 
     In some examples, the one or more processors may receive a second user selection to focus at a second region of a second preview image ( 80 ). In this example, the one or more processors may determine whether there is image content at different depths at the second region ( 82 ). For instance, the one or more processors may perform similar techniques are those described in  FIG.  8    to determine whether there is image content at different depths at the second region. 
     Based on the determination that there is not image content at different depths at the second region, the one or more processors may control a second focus level for camera  12  based on the second user selection ( 84 ). For instance, because there is not image content at different depths, there may not be any confusion as to where to focus camera  12 . Therefore, rather than displaying an alternative version of the image content, the one or more processors may be able to control the focus level of camera  12  based on the user selection (e.g., no subsequent user selection is needed). 
       FIG.  10    is a flowchart illustrating one or more example techniques of operation. In the example of  FIG.  10   , display  28  may receive a user touch at a region ( 90 ). Display  28  may transmit a signal to one or more processors that identifies the area encompassed by the region. 
     The one or more processors may determine whether there is image content at different depths in the region ( 92 ). If the one or more processors determine that there is not image content at different depths (NO of  92 ), the one or more processors may control the focus level of camera  12  based on the region that the user touched ( 94 ). 
     If the one or more processors determine that there is image content at different depths (YES of  92 ), the one or more processors may output an alternative version of the image content in the region ( 96 ). Examples of the alternative version include the zoomed in version and the blurred version, but other examples are possible. 
     The one or more processors may determine whether the user is pressing, holding, or hovering over display  28  ( 98 ). For instance, display  28  may generate a signal that the one or more processors receive that indicates whether the user is pressing, holding, or hovering over display  28 . 
     If the one or more processors determine that the user is pressing, holding, or hovering over display  28  (YES of  98 ), the one or more processors may control the focus level for camera  12  based on the touch focus assist mode. One example of the touch focus assist mode is described above with respect to  FIG.  5   . 
     If the one or more processors determine that the user is not pressing, holding, or hovering over display  28  (NO of  98 ), the one or more processors may determine whether the user is swiping left or right on display  28  ( 102 ). If the one or more processors determine that the user is swiping left or right on display  28  (YES of  102 ), the one or more processors may control the focus level for camera  12  based on the manual focus assist mode ( 104 ). Examples of the manual focus assist mode include the examples illustrated in  FIGS.  6  and  7 A and  7 B . 
     If the one or more processors determine that the user is not swiping left or right on display  28 , the one or more processors may exit controlling the focuslevel level ( 106 ). For instance, the operation of controlling the focus may timeout if the user does not provide an input for how to control the focus level. 
     In the example of  FIG.  10   , the example operations do not necessarily have to be performed in the illustrated order. For instance, in some examples, the one or more processors may first determine if there is a user selection (e.g., swipe, move slider, hold and drag dial, etc.) on display  28  to manually control the focus level ( 102 ) and control the focus level based on whether there is a user selection. In such example, if there is not a user selection on display  28  to manually control the focus level, then the one or more processors may determine if there is a press, hold, or hover over display  28  ( 98 ) for selection of a sub-region for controlling the focus level. In some examples, the user may manipulate a physical controller, such as a dial, slider, or rotate a button or “crown” for manual user selection to control the focus manually. 
     The following describes one or more example techniques in accordance with this disclosure. 
     Example 1. A device for image capture, the device comprising: a memory configured to store a preview image; and one or more processors coupled to the memory and configured to: receive a user selection to focus at a region of the preview image stored in the memory; determine whether there is image content at different depths in the region; based on the determination that there is image content at different depths in the region, output an alternative version of the image content in the region; receive a subsequent user selection within the alternative version; and control a focus level for a camera based on the subsequent user selection. 
     Example 2. The device of example 1, wherein outputting the alternative version of the image content in the region comprises outputting a zoomed in version of the image content in the region. 
     Example 3. The device of any of examples 1 and 2, wherein controlling the focus level for the camera comprises controlling a lens position of a lens of the camera. 
     Example 4. The device of any of examples 1-4, wherein receiving the subsequent user selection comprises receiving the subsequent user selection within the alternative version of the image content in the region that selects a sub-region within the region, and wherein controlling the focus level comprises controlling the focus level based on the subsequent user selection of the sub-region. 
     Example 5. The device of example 4, wherein the subsequent user selection within the alternative version of the image content in the region that selects the sub-region within the region comprises a touch user selection that selects the sub-region within the region. 
     Example 6. The device of any of examples 1-5, wherein receiving the subsequent user selection comprises receiving the subsequent user selection within the alternative version of the image content to manually control the focus level, and wherein controlling the focus comprises controlling the focus based on the manual controlling of the focus level by a user. 
     Example 7. The device of example 6, wherein the one or more processors are configured to output a histogram illustrating an amount of the image content that is closer to and an another amount of the image content that is further away from a focal point during the subsequent user selection. 
     Example 8. The device of examples 6 and 7, wherein the subsequent user selection within the alternative version of the image content to manually control the focus level comprises a swipe, slide, or drag and hold user selection to manually adjust a depth of focus. 
     Example 9. The device of examples 1-8, wherein the user selection is a first user selection, wherein the region is a first region, wherein the focus level is a first focus level, wherein the preview image is a first preview image, and wherein the one or more processors are configured to: receive a second user selection to focus at a second region of a second preview image; determine whether there is image content at different depths at the second region; and based on the determination that there is not image content at different depths at the second region, control a second focus level for the camera based on the second user selection. 
     Example 10. The device of any of examples 1-9, wherein, based on the determination that there is image content at different depths in the region, outputting the alternative version of the image content in the region comprises outputting, in response to a condition being satisfied that there is image content at different depths in the region, the alternative version of the image content in the region. 
     Example 11. The device of any of examples 1-10, wherein outputting an alternative version of the image content in the region comprises blurring portions of the region that are not in focus. 
     Example 12. The device of any of examples 1-11, wherein the device is configured to capture an image at the focus level of the camera. 
     Example 13. The device of any of examples 1-12, wherein determining whether there is image content at different depths in the region comprises determining whether there is image content at different depths based on one or more of a phase detection auto focus (PDAF) based depth map, a defocus map, time of flight (ToF) stereo depth, or structured light. 
     Example 14. A method for image capture, the method comprising: receiving a user selection to focus at a region of the preview image stored in the memory; determining that there is image content at different depths in the region; based on the determination that there is image content at different depths in the region, outputting an alternative version of the image content in the region; receiving a subsequent user selection within the alternative version; and controlling a focus level for a camera based on the subsequent user selection. 
     Example 15. The method of example 14, wherein outputting the alternative version of the image content comprises outputting a zoomed in version of the image content. 
     Example 16. The method of any of examples 14 and 15, wherein controlling the focus level for the camera comprises controlling a lens position of a lens of the camera. 
     Example 17. The method of any of examples 14-16, wherein receiving the subsequent user selection comprises receiving the subsequent user selection within the alternative version of the image content in the region that selects a sub-region within the region, and wherein controlling the focus level comprises controlling the focus level based on the subsequent user selection of the sub-region. 
     Example 18. The method of example 17, wherein the subsequent user selection within the alternative version of the image content in the region that selects the sub-region within the region comprises a touch user selection that selects the sub-region within the region. 
     Example 19. The method of any of examples 14-18, wherein receiving the subsequent user selection comprises receiving the subsequent user selection within the alternative version of the image content to manually control the focus level, and wherein controlling the focus comprises controlling the focus based on the manual controlling of the focus level by a user. 
     Example 20. The method of example 19, further comprising outputting a histogram illustrating an amount of the image content that is closer to and an another amount of the image content that is further away from a focal point during the subsequent user selection. 
     Example 21. The method of any of examples 19 and 20, wherein the subsequent user selection within the alternative version of the image content to manually control the focus level comprises a swipe, slide, or drag and hold user selection to manually adjust a depth of focus. 
     Example 22. The method of any of examples 14-21, wherein the user selection is a first user selection, wherein the region is a first region, and wherein the focus level is a first focus level, wherein the preview image is a first preview image, the method further comprising: receiving a second user selection to focus at a second region of a second preview image; determining that there is image content at different depths at the second region; based on the determination that there is not image content at different depths at the second region, controlling a second focus level for the camera based on the second user selection. 
     Example 23. The method of any of examples 14-22, wherein, based on the determination that there is image content at different depths in the region, outputting the alternative version of the image content in the region comprises outputting, in response to a condition being satisfied that there is image content at different depths in the region, the alternative version of the image content in the region. 
     Example 24. The method of any of examples 14-23, outputting an alternative version of the image content in the region comprises blurring portions of the region that are not in focus. 
     Example 25. The method of any of examples 14-24, further comprising capturing an image at the focus level of the camera. 
     Example 26. The method of any of examples 14-25, determining that there is image content at different depths in the region comprises determining whether there is image content at different depths based on one or more of a phase detection auto focus (PDAF) based depth map, a defocus map, time of flight (ToF), stereo depth, or structured light. 
     Example 27. A computer-readable storage medium storing instructions thereon that when executed cause one or more processors to: receive a user selection to focus at a region of the preview image stored in the memory; determine that there is image content at different depths in the region; based on the determination that there is image content at different depths in the region, output an alternative version of the image content in the region; receive a subsequent user selection within the alternative version; and control a focus level for a camera based on the subsequent user selection. 
     Example 28. The computer-readable storage medium of example 27, wherein the instructions that cause the one or more processors to control the focus level for the camera comprise instructions that cause the one or more processors to control a lens position of a lens of the camera. 
     In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted over, as one or more instructions or code, a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which corresponds to a tangible medium such as data storage media. In this manner, computer-readable media generally may correspond to tangible computer-readable storage media which is non-transitory. Data storage media may be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code and/or data structures for implementation of the techniques described in this disclosure. A computer program product may include a computer-readable medium. 
     By way of example, and not limitation, such computer-readable storage media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. It should be understood that computer-readable storage media and data storage media do not include carrier waves, signals, or other transient media, but are instead directed to non-transient, tangible storage media. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media. 
     Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term “processor,” as used herein may refer to any of the foregoing structure or any other structure suitable for implementation of the techniques described herein. In addition, in some aspects, the functionality described herein may be provided within dedicated hardware and/or software modules configured for encoding and decoding, or incorporated in a combined codec. Also, the techniques could be fully implemented in one or more circuits or logic elements. 
     The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC) or a set of ICs (e.g., a chip set). Various components, modules, or units are described in this disclosure to emphasize functional aspects of devices configured to perform the disclosed techniques, but do not necessarily require realization by different hardware units. Rather, as described above, various units may be combined in a codec hardware unit or provided by a collection of interoperative hardware units, including one or more processors as described above, in conjunction with suitable software and/or firmware. 
     Various examples have been described. These and other examples are within the scope of the following claims.