IP Library Granted Patent US 12,309,380
Granted Patent B2
US 12,309,380 · App. 18/174,259 · Granted May 20, 2025

Systems and methods for a multi-resolution visual sensing architecture for augmented reality

Inventors: Venkatesh Kodukula (Tempe, AZ); Alexander Shearer (Tempe, AZ); Van Nguyen (Madison, WI); Srinivas Lingutla (Chicago, IL); Robert LiKamWa (Tempe, AZ)
Assignee: Arizona Board of Regents on Behalf of Arizona State University
H04N19/132H04N19/167H04N19/172H04N19/182H04N19/33H04N19/423
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,309,380
App. No.
18/174,259
Granted
May 20, 2025
Kind
B2
Abstract

A system defining a visual sensing pipeline architecture flexibly allows application developers to dynamically adapt the spatial resolution and update rate of different “rhythmic pixel encoding regions” in a scene. The system ingests pixel streams with raster-scan pixel read-out patterns, but only encodes relevant pixels prior to storing them in memory. The system includes streaming hardware to decode the stored rhythmic pixel encoding region stream into traditional frame-based representations to feed into standard computer vision algorithms.

Claims (95)

1. A system, comprising:

a processor in communication with a memory, the memory including instructions, which, when executed, cause the processor to:

receive, at an encoder formulated at the processor, a frame of a plurality of frames, the frame having a plurality of pixels;

generate, by the encoder, an encoded frame having a plurality of regional pixels from the frame and based on a set of encoding region labels, the set of encoding region labels defining one or more encoding regions, a stride resolution, and a skip rate and the plurality of regional pixels including a subset of the plurality of pixels that fall within the one or more encoding regions;

write the encoded frame to the memory preserving raster-scan order; and

write a set of encoding metadata associated with the encoded frame to the memory, the set of encoding metadata including an encoding mask and a per-row offset,

wherein the memory includes further instructions to reconstruct, by a decoder, the frame using the encoded frame, per-row offset and encoding mask.

2. The system of claim 1 , the memory further including instructions executable by the processor to:

receive the set of encoding region labels indicative of an encoding region of the one or more encoding regions, including:

coordinates of a corner of the encoding region;

dimensions of the encoding region;

the stride resolution indicative of a density of pixels of the encoding region to be encoded; and

the skip rate indicative of an interval for consecutive sampling within the encoding region.

3. The system of claim 1 , the memory further including instructions executable by the processor to:

receive data indicative of the frame as a pixel stream at the encoder, the pixel stream including the plurality of pixels of the frame, each pixel of the plurality of pixels being associated with a respective pixel address within the frame;

select, at the encoder, one or more encoding region labels of the set of encoding region labels that correspond to the frame based on a vertical position of a pixel of the plurality of pixels and a corresponding vertical range of an encoding region defined within the set of encoding region labels;

compare a horizontal position of the pixel of the plurality of pixels with a corresponding horizontal range of an encoding region defined within the set of encoding region labels; and

encode, based on the comparison, one or more regional pixels of the frame into the encoded frame that fall within the encoding region.

4. The system of claim 3 , the memory further including instructions executable by the processor to:

omit, based on the comparison, one or more non-regional pixels of the frame that do not fall within the encoding region from the encoded frame;

omit, based on the comparison, one or more strided pixels of the frame from the encoded frame based on the stride resolution defined within the set of encoding region labels;

omit, based on the comparison, one or more skipped pixels of the frame from the encoded frame based on the skip rate defined within the set of encoding region labels; and

generate, based on the comparison, the encoding mask indicating positions of the one or more regional pixels, the one or more skipped pixels, the one or more strided pixels, and the one or more non-regional pixels.

5. The system of claim 3 , the memory further including instructions executable by the processor to:

increment, for each regional pixel within a row of the encoded frame, the per-row offset indicative of a total quantity of regional pixels within the row.

6. The system of claim 1 , the memory further including instructions executable by the processor to:

receive, at the decoder, a request for pixel data including a pixel request address for a pixel of the frame;

translate, at the decoder, the pixel request address to an encoded pixel request address of the encoded frame;

retrieve, based on the encoded pixel request address, encoded pixel response data indicative of the encoded frame;

retrieve, based on the encoded pixel request address, the set of encoding metadata associated with the encoded frame including the per-row offset and the encoding mask; and

generate, at the decoder, output data indicative of a pixel value for each pixel in the frame using the encoding mask.

7. The system of claim 6 , wherein translating the pixel request address to the encoded pixel request address of the encoded frame incorporates a set of encoding metadata associated with one or more previous frames.

8. The system of claim 1 , wherein the decoder includes a first-in, first-out (FIFO) sampling unit in communication with a resampling buffer that interpolates pixel data for reconstruction of the frame based on the encoding mask.

9. The system of claim 8 , wherein the encoding mask indicates that a pixel of the plurality of pixels of the frame is a regional pixel, and wherein the memory further includes instructions executable by the processor to:

de-queue encoded pixel response data from the FIFO sampling unit following retrieval of encoded pixel response data from the memory to obtain a pixel value for the pixel; and

assign the pixel value for the pixel based on the encoded pixel response data.

10. The system of claim 8 , wherein the encoding mask indicates that a pixel of the plurality of pixels of the frame is a strided pixel or a skipped pixel, and wherein the memory further includes instructions executable by the processor to:

re-sample a previous pixel to obtain a pixel value for the pixel; and

assign the pixel value for the pixel based on the previous pixel.

11. The system of claim 8 , wherein the encoding mask indicates that a pixel of the plurality of pixels of the frame is a non-regional pixel, and wherein the memory further includes instructions executable by the processor to:

assign a pixel value for the pixel to be a default pixel value.

12. A system, comprising:

a processor in communication with a memory, the memory including instructions, which, when executed, cause the processor to:

receive, at a decoder in communication with the memory and formulated at the processor, a request for pixel data including a pixel request address for a pixel of a frame, the frame being encoded as an encoded frame and being associated with a set of encoding metadata including a per-row offset and an encoding mask;

translate, at the decoder, the pixel request address to an encoded pixel request address of the encoded frame,

wherein translating the pixel request address to the encoded pixel request address of the encoded frame incorporates a set of encoding metadata associated with one or more previous frames;

retrieve, based on the encoded pixel request address, encoded pixel response data indicative of the encoded frame;

retrieve, based on the encoded pixel request address, the set of encoding metadata associated with the encoded frame including the per-row offset and the encoding mask; and

reconstruct, by the decoder, the frame using the encoded frame, per-row offset and encoding mask.

13. The system of claim 12 , wherein the decoder includes a first-in, first-out (FIFO) sampling unit in communication with a resampling buffer that interpolates pixel data for reconstruction of the frame based on the encoding mask.

14. The system of claim 13 , wherein the encoding mask indicates that a pixel of the frame is a regional pixel, and wherein the memory further includes instructions executable by the processor to:

de-queue encoded pixel response data from the FIFO sampling unit following retrieval of encoded pixel response data from the memory to obtain a pixel value for the pixel; and

assign the pixel value for the pixel based on the encoded pixel response data.

15. The system of claim 13 , wherein the encoding mask indicates that a pixel of the frame is a strided pixel or a skipped pixel, and wherein the memory further includes instructions executable by the processor to:

re-sample a previous pixel to obtain a pixel value for the pixel; and

assign the pixel value for the pixel based on the previous pixel.

16. The system of claim 13 , wherein the encoding mask indicates that a pixel of the frame is a non-regional pixel, and wherein the memory further includes instructions executable by the processor to:

assign a pixel value for the pixel to be a default pixel value.

17. A method, comprising:

receiving, at an encoder formulated at a processor, a frame of a plurality of frames, the frame having a plurality of pixels, further including

receiving the frame as a pixel stream at the encoder, the pixel stream including the plurality of pixels of the frame, each pixel of the plurality of pixels being associated with a respective pixel address within the frame;

generating, by the encoder, an encoded frame having a plurality of regional pixels from the frame and based on a set of encoding region labels, the set of encoding region labels defining one or more encoding regions, a stride resolution, and a skip rate and the plurality of regional pixels including a subset of the plurality of pixels that fall within the one or more encoding regions,

including

selecting, at the encoder, one or more encoding region labels of the set of encoding region labels that correspond to the frame based on a vertical position of a pixel of the plurality of pixels and a corresponding vertical range of an encoding region defined within the set of encoding region labels;

comparing a horizontal position of the pixel of the plurality of pixels with a corresponding horizontal range of an encoding region of the one or more encoding regions defined within the set of encoding region labels; and

encoding, based on the comparison, one or more regional pixels of the frame into the encoded frame that fall within the encoding region;

writing the encoded frame to a memory preserving raster-scan order; and

writing a set of encoding metadata associated with the encoded frame to the memory, the set of encoding metadata including an encoding mask and a per-row offset.

18. The method of claim 17 , further comprising:

omitting, based on the comparison, one or more non-regional pixels of the frame that do not fall within the encoding region from the encoded frame;

omitting, based on the comparison, one or more strided pixels of the frame from the encoded frame based on the stride resolution defined within the set of encoding region labels;

omitting, based on the comparison, one or more skipped pixels of the frame from the encoded frame based on the skip rate defined within the set of encoding region labels; and

generating, based on the comparison, the encoding mask indicating positions of the one or more regional pixels, the one or more skipped pixels, the one or more strided pixels, and the one or more non-regional pixels.

19. The method of claim 17 , further comprising:

reconstructing, by a decoder in communication with the memory and formulated at the processor, the frame using the encoded frame, per-row offset and encoding mask.

20. The method of claim 19 , further comprising:

receiving, at the decoder, a request for pixel data including a pixel request address for a pixel of the frame;

translating, at the decoder, the pixel request address to an encoded pixel request address of the encoded frame using a set of encoding metadata associated with one or more previous frames;

retrieving, based on the encoded pixel request address, encoded pixel response data indicative of the encoded frame;

retrieving, based on the encoded pixel request address, the set of encoding metadata associated with the encoded frame including the per-row offset and the encoding mask; and

generating, at the decoder, output data indicative of a pixel value for each pixel in the frame using the encoding mask.

21. The method of claim 19 , wherein the encoding mask indicates that a pixel of the plurality of pixels of the frame is a regional pixel, the method further comprising:

de-queueing encoded pixel response data from a first-in, first-out (FIFO) sampling unit following retrieval of encoded pixel response data to obtain a pixel value for the pixel; and

assigning the pixel value for the pixel based on the encoded pixel response data.

22. The method of claim 19 , wherein the encoding mask indicates that a pixel of the plurality of pixels of the frame is a strided pixel or a skipped pixel, the method further comprising:

re-sampling a previous pixel to obtain a pixel value for the pixel; and

assigning the pixel value for the pixel based on the previous pixel.

23. The method of claim 19 , wherein the encoding mask indicates that a pixel of the plurality of pixels of the frame is a non-regional pixel, the method further comprising:

assigning a pixel value for the pixel to be a default pixel value.

24. A method, comprising:

receiving, at an encoder formulated at a processor, a frame of a plurality of frames, the frame having a plurality of pixels;

generating, by the encoder, an encoded frame having a plurality of regional pixels from the frame and based on a set of encoding region labels, the set of encoding region labels defining one or more encoding regions, a stride resolution, and a skip rate and the plurality of regional pixels including a subset of the plurality of pixels that fall within the one or more encoding regions, including

incrementing, for each regional pixel within a row of the encoded frame, the per-row offset indicative of a total quantity of regional pixels within the row

writing the encoded frame to a memory preserving raster-scan order; and

writing a set of encoding metadata associated with the encoded frame to the memory, the set of encoding metadata including an encoding mask and a per-row offset.

Assignments (2)
CONFIRMATORY LICENSE Recorded Feb 10, 2025
From: ARIZONA STATE UNIVERSITY-TEMPE CAMPUS
To: NATIONAL SCIENCE FOUNDATION
Reel/Frame 070162/0177 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 21, 2024
From: KODUKULA, VENKATESH; SHEARER, ALEXANDER; NGUYEN, VAN; LINGUTLA, SRINIVAS; LIKAMWA, ROBERT
To: ARIZONA BOARD OF REGENTS ON BEHALF OF ARIZONA STATE UNIVERSITY
Reel/Frame 066519/0770 →
Continuity (2)
Provisional Application 63313537 · Feb 24, 2022
Related Publication 20230269377A1 · Aug 24, 2023
References Cited (47)
US 20190116352A1 · Pesonen · 2019 [cited by examiner]
US 20190273921A1 · Abe · 2019 [cited by examiner]
Andrew Adams, Eino-Ville Talvala, Sung Hee Park, David E Jacobs, Boris Ajdin, Natasha Gelfand, Jennifer Dolson, Daniel Vaquero, Jongmin Baek, Marius Tico, et al. The frankencamera: an experimental platform for computati… [cited by applicant]
Android. Android Camera API documentation. https://developer.android.com/ guide/topics/media/camera. [cited by applicant]
Mark Buckler, Philip Bedoukian, Suren Jayasuriya, and Adrian Sampson. Eva2: Exploiting temporal redundancy in live computer vision. In ACM/IEEE 45th Annual Int. Symp on Computer Architecture (ISCA), 2018. [cited by applicant]
Z. Cao, G. Hidalgo Martinez, T. Simon, S. Wei, and Y. A. Sheikh. Openpose: Real-time multi-person 2d pose estimation using part affinity fields. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2019. [cited by applicant]
Tiffany Yu-Han Chen, Lenin Ravindranath, Shuo Deng, Paramvir Bahl, and Hari Balakrishnan. Glimpse: Continuous, real-time object recognition on mobile devices. In Proc. of the 13th ACM Conf. on Embedded Networked Sensor … [cited by applicant]
Yu-Hsin Chen, Tien-Ju Yang, Joel Emer, and Vivienne Sze. Eyeriss v2: A flexible accelerator for emerging deep neural networks on mobile devices. IEEE journal on Emerging and Selected Topics in Circuits and Systems, 2019. [cited by applicant]
Jaehyuk Choi, Seokjun Park, Jihyun Cho, and Euisik Yoon. An energy/illumination-adaptive CMOS image sensor with reconfigurable modes of operations. IEEE journal of Solid-State Circuits, 2015. [cited by applicant]
Gordon Cooper, Augmenting Your Reality with Deep Learning, Synopsys. https: //www.synopsys.com/designware-ip/technical-bulletin/augmenting-your-reality-dwtb_q318.html. [cited by applicant]
EETimes. Tensilica's New Vision/AI DSP Guns for SLAM. https://www.eetimes. com/tensilicas-new-vision-ai-dsp-guns-for-slam. [cited by applicant]
Yu Feng, Paul Whatmough, and Yuhao Zhu. Asv: accelerated stereo vision system. In Proc. of the 52nd Annual IEEE/ACM Int. Symp. on Microarchitecture, 2019. [cited by applicant]
Gallego, Guillermo and Delbruck, Tobi and Orchard, Garrick and Bartolozzi, Chiara and Taba, Brian and Censi, Andrea and Leutenegger, Stefan and Davison, Andrew and Conradt, Jorg and Daniilidis, Kostas and others. Event-… [cited by applicant]
Saugata Ghose, Abdullah Giray Yaglikci, Raghav Gupta, Donghyuk Lee, Kais Kudrolli, William X Liu, Hasan Hassan, Kevin K Chang, Niladrish Chatterjee, Aditya Agrawal, Mike Connor, and Onur Mutlu. What your dram power mode… [cited by applicant]
Ashish Gondimalla, Noah Chesnut, Mithuna Thottethodi, and TN Vijaykumar. Sparten: A sparse tensor accelerator for convolutional neural networks. In Proc. of the 52nd Annual IEEE/ACM International Symposium on Microarchi… [cited by applicant]
Rachel Inman, Take off to your next destination with Google Maps. https://www.blog. google/products/maps/take-your-next-destination-google-maps. [cited by applicant]
Mohit Gupta, Amit Agrawal, Ashok Veeraraghavan, and Srinivasa G Narasimhan. Flexible voxels for motion-aware videography. In European Conference on Com¬puter Vision, 2010. [cited by applicant]
Rehan Hameed, Wajahat Qadeer, Megan Wachs, Omid Azizi, Alex Solomatnikov, Benjamin C Lee, Stephen Richardson, Christos Kozyrakis, and Mark Horowitz. Understanding sources of inefficiency in general-purpose chips. In Pro… [cited by applicant]
Ron Ho, Kenneth W Mai, and Mark A Horowitz. The future of wires. Proc. of the IEEE, 2001. [cited by applicant]
Jinhan Hu, Jianan Yang, Vraj Delhivala, and Robert LiKamWa. Characterizing the reconfiguration latency of image sensor resolution on android devices. In Proc. of the 19th International Workshop on Mobile Computing Syste… [cited by applicant]
Odrika Iqbal, Saquib Siddiqui, Joshua Martin, Sameeksha Katoch, Andreas Spanias, Daniel Bliss, Suren Jayasuriya, and SenSIP Center. Design and fpga implementation of an adaptive video subsampling algorithm for energy-ef… [cited by applicant]
Robert LiKamWa, Bodhi Priyantha, Matthai Philipose, Lin Zhong, and Paramvir Bahl. Energy characterization and optimization of image sensing toward continuous mobile vision. In Proc. of the 11th annual international conf… [cited by applicant]
Chaochao Lu, Michael Hirsch, and Bernhard Scholkopf. Flexible spatio-temporal networks for video prediction. In Proc. of the IEEE Conf. on Computer Vision and Pattern Recognition, 2017. [cited by applicant]
Nir Magen, Avinoam Kolodny, Uri Weiser, and Nachum Shamir. Interconnect-power dissipation in a microprocessor. In Proc. of the 2004 international workshop on System level interconnect prediction, 2004. [cited by applicant]
Krishna T Malladi, Frank A Nothaft, Karthika Periyathambi, Benjamin C Lee, Christos Kozyrakis, and Mark Horowitz. Towards energy-proportional datacenter memory with mobile dram. In 39th Annual Int. Symp. on Computer Arc… [cited by applicant]
Max Planck Institute for Informatics, University of Bonn. PoseTrack Dataset and Benchmark. https://posetrack.net/. [cited by applicant]
James D Meindl, Jeffrey A Davis, Payman Zarkesh-Ha, Chirag S Patel, Kevin P Martin, and Paul A Kohl. Interconnect opportunities for gigascale integration. IBM journal of research and development, 2002. [cited by applicant]
Micron technologies. Micron system power calculators. https://www.micron. com/support/tools-and-utilities/power-calc. [cited by applicant]
MIPI Alliance. MIPI Camera Serial Interface 2 (MIPI CSI-2). https://www.mipi. org/specifications/csi-2. [cited by applicant]
Mur-Artal, Rail, Montiel, J. M. M. and Tard6s, Juan D. ORB-SLAM: a versatile and accurate monocular SLAM system. IEEE Trans. on Robotics, 2015. [cited by applicant]
Saman Naderiparizi, Pengyu Zhang, Matthai Philipose, Bodhi Priyantha, Jie Liu, and Deepak Ganesan. Glimpse: A programmable early-discard camera architecture for continuous mobile vision. In Proc. of the 15th Annual Int.… [cited by applicant]
NICTA. ChokePoint Dataset. http://arma.sourceforge.net/chokepoint/. [cited by applicant]
OpenCV. OpenCV KeyPoint Class Reference. https://docs.opencv.org/3.4/d2/ d29/classcv_1_1KeyPoint.html. [cited by applicant]
Dhinakaran Pandiyan and Carole-Jean Wu. Quantifying the energy cost of data movement for emerging smart phone workloads on mobile platforms. In 2014 IEEE Int. Syump. on Workload Characterization (IISWC). IEEE, 2014. [cited by applicant]
Vijay Raghunathan, Mani B Srivastava, and Rajesh K Gupta. A survey of techniques for energy efficient on-chip communication. In ACM Proc. of the 40th annual Design Automation Conference, 2003. [cited by applicant]
Dikpal Reddy, Ashok Veeraraghavan, and Rama Chellappa. P2c2: Programmable pixel compressive camera for high speed imaging. In CVPR 2011. [cited by applicant]
Stemmer Imaging. Teledyne DALSA Piranha4—Dual-Line-CMOS line camera. https://www.stemmer-imaging.com/en/products/series/teledyne-dalsa-piranha4. [cited by applicant]
J. Sturm, N. Engelhard, F. Endres, W. Burgard, and D. Cremers. A benchmark for the evaluation of rgb-d slam systems. In Proc. of the International Conference on Intelligent Robot Systems (IROS), 2012. [cited by applicant]
Thomas Vogelsang. Understanding the energy consumption of dynamic random access memories. In 43rd Annual IEEE/ACM Int Symp. on Microarchitecture. IEEE, 2010. [cited by applicant]
Wikipedia. Foveated Rendering. https://en.wikipedia.org/wiki/Foveated_ rendering. [cited by applicant]
Xilinx. H.264/H.265 Video Codec Unit v1.2. https://www.xilinx.com/support/ documentation/ip_documentation/vcu/v1_2/pg252-vcu.pdf. [cited by applicant]
Xilinx. Vivado Design Suite. https://www.xilinx.com/products/design-tools/ vivado.html. [cited by applicant]
Xilinx. Zynq DPU v3.2. https://www.xilinx.com/support/documentation/ip_ documentation/dpu/v3_2/pg338-dpu.pdf. [cited by applicant]
Ximea. Multiple ROI cameras. https://www.ximea.com/support/wiki/allprod/ Multiple_ROI. [cited by applicant]
Zhekai Zhang, Hanrui Wang, Song Han, and William J Dally. Sparch: Efficient architecture for sparse matrix multiplication. In 2020 IEEE Int. Symp. on High Performance Computer Architecture (HPCA), 2020. [cited by applicant]
Yuhao Zhu, Anand Samajdar, Matthew Mattina, and Paul Whatmough. Euphrates: Algorithm-soc co-design for low-power mobile continuous vision. ISCA, 2018. [cited by applicant]
Microsoft. Azure Kinect DK. https://www.microsoft.com/en-us/p/azure-kinect-dk/8pp5vxmd9nhq?activetab=pivot%3aoverviewtab. [cited by applicant]