An apparatus comprising: an image sensor comprising an array of pixel cells, each pixel cell including a photodiode and circuits to generate image data, the photodiodes being formed in a first semiconductor substrate; and a controller formed in one or more second semiconductor substrates that include the circuits of the array of pixel cells, the first and second semiconductor substrates forming a stack and housed within a semiconductor package; wherein the controller is configured to: determine whether first image data generated by the image sensor contain features of an object; based on whether the first image data contain features of the object, generate programming signals for the image sensor; and control, based on the programming signals, the image sensor to generate second image data; and further comprising an image processor implemented in the one or more second semiconductor substrates; wherein the image processor is configured to: extract the features of the object; and provide pixel locations of the extracted features of the object in a first image frame to the controller; wherein the controller is configured to: determine, based on the pixel locations of the extracted features, a region of interest for a second image frame to contain the second image data; and generate the programming signals based on the ROI; characterized in that the image processor is configured to: receive, from a second sensor, position information indicating a physical position of the object; and extract the features of the object from the first image data based on the position information. an image sensor comprising an array of pixel cells, each pixel cell including a photodiode and circuits to generate image data, the photodiodes being formed in a first semiconductor substrate; and a controller formed in one or more second semiconductor substrates that include the circuits of the array of pixel cells, the first and second semiconductor substrates forming a stack and housed within a semiconductor package; wherein the controller is configured to: determine whether first image data generated by the image sensor contain features of an object; based on whether the first image data contain features of the object, generate programming signals for the image sensor; and determine whether first image data generated by the image sensor contain features of an object; based on whether the first image data contain features of the object, generate programming signals for the image sensor; and control, based on the programming signals, the image sensor to generate second image data; and further comprising an image processor implemented in the one or more second semiconductor substrates; wherein the image processor is configured to: extract the features of the object; and provide pixel locations of the extracted features of the object in a first image frame to the controller; wherein the controller is configured to: determine, based on the pixel locations of the extracted features, a region of interest for a second image frame to contain the second image data; and generate the programming signals based on the ROI; characterized in that the image processor is configured to: receive, from a second sensor, position information indicating a physical position of the object; and extract the features of the object from the first image data based on the position information. determine, based on the pixel locations of the extracted features, a region of interest for a second image frame to contain the second image data; and generate the programming signals based on the ROI; characterized in that the image processor is configured to: receive, from a second sensor, position information indicating a physical position of the object; and extract the features of the object from the first image data based on the position information. receive, from a second sensor, position information indicating a physical position of the object; and extract the features of the object from the first image data based on the position information.