6 ms·
When I was first learning computer vision, I wrote a program that could tell the time from an image of a clock [1]. I had no purpose for it besides the fact tha
by jinay 2y ago
When I was first learning computer vision, I wrote a program that could tell the time from an image of a clock [1]. I had no purpose for it besides the fact that it seemed like a cool problem to try and solve.
Years later, I get an email from a stranger in Korea, asking me how to run my program. Why would he want to use my silly program? Turns out you can adapt the code to read analog pressure gauges which is really useful for chemical plants. Goes to show that there's often a use for most things.
[1] https://github.com/jinayjain/timekeeper https://github.com/jinayjain/timekeeper
- hi_hi 2y agoOut of interest, how does this account for the orientation of the clock? Is it assuming 12 is always at the top, or is there some way it would work if the photo was somewhat rotated?
- jinay 2y agoYep, it does some naive rescaling of the clock to make it circular (since perspective would make it more like an ellipse in the image), but then assumes 12 is always at the top.
- nasseri 2y agoThat is so frickin cool!
- jinay 2y agoThanks!
- j_bum 2y agoThanks for sharing this. The blog article on building your pipeline was a fun read! Your solution has a nice blend of heuristics and DL. If you’re ever interested in revisiting this click project, you could check out DeepLabCut [0]. A blogpost highlighted a toy example of training a DLC model to recognize clock arms [1], which may or may not be more consistent than your Canny approach :) [0] https://github.com/DeepLabCut/DeepLabCut https://github.com/DeepLabCut/DeepLabCut [1] https://guillermohidalgogadea.com/openlabnotebook/training-your-first-dlc-model-/ https://guillermohidalgogadea.com/openlabnotebook/training-y...
- jinay 2y agoWoah generalized pose estimation seems really useful and it's cool that the example is for reading a clock. Thanks for sharing!
- bambax 2y agoCool anecdote!
- jinay 2y agoThank you!
- el_benhameen 2y agoYour anecdote gave me a genuine “that’s cool” smile, the sort that I haven’t had over a piece of tech in a bit. That must have been a fun email. Thanks for sharing!
- andrewgleave 2y agoThis is very similar to when I used OpenCV to read the angle of a cardboard knob I pinned on the wall in my office to change the volume on Spotify!
- yurishimo 2y agoThat is a super cool idea! Kinda sad that it doesn’t make much sense outside of a very particular use case scenario. Much more practical to mount a potentiometer to the wall for any sort of fixed installation. It might be cool adapt for a mobile office setup where you’re only present in one location for a few days but still want some automated creature comforts.
- carapace 2y agoCf. https://dynamicland.org/ https://dynamicland.org/ > Dynamicland is a nonprofit research lab creating a humane dynamic medium. > What that means is a way for real people in the real world to explore ideas together, not just with words and pictures, but with computation. They're doing stuff like that.
- christkv 2y agolol that’s great and not that useless at all. I could see using Lego and opencv to create adhoc control boards for some fun hacking.
- dotancohen 2y agoDid you once share this anecdote on /.? I remember this.
- jinay 2y agoHmm, I've never used /. so it wasn't me who shared it.
- Gazoche 2y agoI used to work for a company that makes smart watches with real (software-driven) mechanical hands, and had to write a very similar computer vision program to read the time from those watches and automatically calibrate the position of the minute and hour hands. So yes it has real purpose ;)
- kekeblom 2y agoAt ETH we worked on an analog pressure gauge reading project. In the larger project, we wanted to read analog pressure gauges in oil refineries. https://github.com/ethz-asl/analog_gauge_reader https://github.com/ethz-asl/analog_gauge_reader
- blacklion 2y agolong-long time ago (think end of last century) friend of mine take contract to automatize gas-pump stations on long gas pipe. Stations were here, with analog gauges and valves. Offer from some "big" business with digital / connected gauges and motorized valves were too much for customer. He wanted much, much cheaper. There were special modems, which use pipe as data line (think something like 150 baud shared between all stations). So, solution implemented by my friend was like: 1) Electric motor with gearbox to motorize valves, it was cheap, as standard electric motors are cheap and customer has its own mechanical shop, so everything was cobbled in-house from standard of-the-shelf components. 2) Modem for each station (it was inevitable) 3) Laptop with B/W web cam on each station. 4) Software which can read gauges from webcam shots. 5) Software which transmit values from all stations to central station and allows to manipulate valves from central station (no automation here, 24/7 human operators) Laptops and cameras were not cheap from personal point of view, but like x100 cheaper than special gauges and valves offered by gas-pipe equipment manufacturer. It was not called "computer vision" at this time.
- p0d 2y agothis had also crossed my mind back a while back for reading home gas meters :-)
- gwern 2y agoIf your timekeeper doesn't perform adequately, there's an impressively overengineered neural net project to read clocks: https://arxiv.org/abs/2111.09162 https://arxiv.org/abs/2111.09162 "It's About Time: Analog Clock Reading in the Wild". (Although I don't know how it would compare to the latest generalist vision models... Clocks are pretty well labeled in photographs online, one would expect.)