Playing with the idea of "different perspectives on the same story"!
A QR code that sends you to a different source based on the angle.
@gvy_dvpont Got me thinking… can it be done without the lens? This one seems to work!
@isziaui HOLY SHIT!! Took a min but got 2 diff ones? github and masto?
@isziaui Are you just half-toning the bits that are different? and the orientation of the sub-dots make them look more black/white based on direction? This is like 40X cooler than what I did
@gvy_dvpont Yeah, half of each pixel comes from one code and the other from the other. I assume readers sample in the center of where they expect the pixels to be based on the alignment blocks, so the important point is that the mask is the same on each pixel, and the center of the pixel lies on the boundary of the mask. So a slight shift of the picture tends to shift all of the samples to one or the other half.
@isziaui this is so so wild amazing work
@gvy_dvpont Lol, just a quick midnight experiment that you nerdsniped me into!
@isziaui @gvy_dvpont That's mad. My phone seems to be happier finding the Masto URL, but I did get it to find the GitHub one too.
@isziaui hi, this is an extremely clever hack, thank you very much for sharing it
@isziaui @gvy_dvpont this is so clever. I love it. I bet you could do one that scans differently based on how far you are by having "high frequency" information that scans as one code that gets replaced by "low frequency" information as you get further back. I did something like this in college, but it didn't involve QR codes
@gvy_dvpont Yep!
I got better results with the checkerboard mask than with vertical or diagonal stripes, and with highest level of error correction, but more experimentation is in order.
@isziaui @gvy_dvpont Oh, neat. Sat there for a minute holding my phone still, nothing happened (other than some highlights on the alignment markers as it recognised there should be a QR code). As soon as I started moving my phone to another angle though, it would scan reliably while in motion.
@isziaui @gvy_dvpont It seems there is even some variability in software decoders too!
(excellent work, both!)
@isziaui @gvy_dvpont ha, i was thinking the same thing but also reducing the number of diff bits by finding near collisions. Finding 30 bit diffs seems pretty trivial with brute forcing
@xssfox @gvy_dvpont That’s actually on my todo list for further experiments!
Nice work! My iPhone rarely recognizes this one though, and when it does it almost always gets kVXY.
@isziaui @gvy_dvpont i suspect mixing both these approaches would work really well. I was planning on doing exactly what you did however ran out if time before bed
@isziaui @gvy_dvpont here's a version with the dithering style. certainly favours one code but I was able to get it to scan both by adjusting angle
@xssfox @gvy_dvpont Yay, this one works really well, despite the uneven scaling!
@isziaui @gvy_dvpont ohhh, I wonder what went wrong with the scaling :/
@xssfox @isziaui @gvy_dvpont This one seems really hard to get scanned on my phone. Loving these projects.
@isziaui @gvy_dvpont fucking hell! That's clever!
@gvy_dvpont Wow, this sure is making the rounds!
This was so much easier than i thought it would be.
A little Gimp goes a long way
@isziaui @gvy_dvpont This seems like the computer vision version of ambiguous optical illusions like the Necker cube, two-faces/vase, or the old woman/young woman picture like I tiled for my profile banner, which are bistable https://en.wikipedia.org/wiki/Multistable_perception
I think it'd be really interesting to look at the dynamics of a QR scanner reading this, if that's possible, and see if there's any overlap with models of bistable perception
@isziaui Number one on HackerNews right now if that's something you care about!