5 ms·
It's all a blur
- cornhole 9mo agoreminds me of the guy who used the photoshop swirl effect to mask his face in csam he produced, who was found out when someone just undid the swirl
- Traubenfuchs 9mo agohttps://www.bbc.com/news/world-us-canada-39411025 https://www.bbc.com/news/world-us-canada-39411025
- lupire 9mo agoAction Lab just did a video on physical swirling vs mixing. Swirling is reversible.
- jszymborski 9mo agoThis is the case I always think of when it comes to reversing image filters.
- praptak 9mo agoMy (admittedly superficial) knowledge about blur reversibility is that an attacker may know what kind of stuff is behind the blur. I mean knowledge like "a human face, but the potential set of humans is known to the attacker" or even worse "a text, but the font is obvious from the unblurred part of the doc".
- jonathanlydall 9mo agoThis was also my understanding. It's essentially like "cracking" a password when you have its hash and know the hashing algorithm. You don't have to know how to reverse the blur, you just need to know how to do it the normal way, you can then essentially brute force through all possible characters one at a time to see if it looks the same after applying the blur. Thinking about this, adding randomness to the blurring would likely help. Or far more simply, just mask the sensitive data with a single color which is impossible to reverse (for rasterized images, this is not a good idea for PDFs which tend to maintain the text "hidden" underneath).
- yetihehe 9mo ago> just mask the sensitive data with a single color which is impossible to reverse (for rasterized images, this is not a good idea for PDFs Also not a good idea for masking already compressed images of text, like jpg, because some of the information might bleed out in uncovered areas.
- radlad 9mo agoInteresting - does a little extra coverage solve this or is it possible to use distant pixels to find the original?
- sebastianmestre 9mo agoyep, some padding fixes this JPEG compression can only move information at most 16px away, because it works on 8x8 pixel blocks, on a 2x down-sampled version of the chroma channels of the image (at least the most common form of it does)
- wheybags 9mo agoI'm not super familiar with the jpeg format, but iirc h.264 uses 16x16 blocks, so if jpeg is the same then padding of 16px on all sides would presumably block all possible information leakage? Except the size of the blocked section ofc. E.g If you know it's a person's name, from a fixed list of people, well "Huckleberry" and "Tom" are very different lengths.
- swiftcoder 9mo ago> mask the sensitive data with a single color which is impossible to reverse You note the pitfall of text remaining behind the redaction in PDFs (and other layered formats), but there are also pitfalls here around alpha channels. There have been several incidents where folks drew not-quite-opaque redaction blocks over their images.
- oulipo2 9mo agoThe parade is easy: just add a small amount of random noise (even not visible to the human eye) to the blurred picture, and suddenly the "blur inversion" fails spectacularly
- sebzim4500 9mo agoDoes this actually work? I would have thought that, given the deconvolution step is just a linear operator with reasonable coefficients, adding a small amount of noise to the blurred image would just add similarly small amount of noise to the unblurred result.
- srean 9mo agoTo reconstruct the image one has to cut off those frequencies in the corrupted image where the signal to noise is poor. In many original images, the signal in high frequencies are sacrificable, so get rid of those and then invert. https://en.wikipedia.org/wiki/Wiener_deconvolution https://en.wikipedia.org/wiki/Wiener_deconvolution If one blindly inverts the linear blur transform then yes, the reconstruction would usually be a complete unrecognisable mess because the inverse operator is going to dramatically boost the noise as well.
- srean 9mo agoEncode the image as a boundary condition of a laminar flow and you can recover the original image from an observation. If, however, you observe after turbulence has set in, then some of the information has been lost, it's in the entropy now. How much, that depends on the turbulent flow. Don't miss out on this video by smarter every day https://youtu.be/j2_dJY_mIys?si=ArMd0C5UzbA8pmzI https://youtu.be/j2_dJY_mIys?si=ArMd0C5UzbA8pmzI Treat the dynamics and time of evolution as your private key, laminar flow is a form of encryption.
- lupire 9mo agoIf you encode code your data directly in the fluid, then turbulence becomes the statistical TTL on the data.
- dsego 9mo agoCan this be applied to camera shutter/motion blur, at low speeds the slight shake of the camera produces this type of blur. This is usually resolved with IBIS to stabilize the sensor.
- alphazard 9mo agoThe ability to reverse is very dependent on the transformation being well known, in this case it is deterministic and known with certainty. Any algorithm to reverse motion blur will depend on the translation and rotation of the camera in physical space, and the best the algorithm could do will be limited by the uncertainty in estimating those values. If you apply a fake motion blur like in photoshop or after effects then that could probably be reversed pretty well.
- dizzant 9mo agoI recall a paper from many years ago (early 2010s) describing methods to estimate the camera motion and remove motion blur from blurry image contents only. I think they used a quality metric on the resulting “unblurred” image as a loss function for learning the effective motion estimate. This was before deep learning took off; certainly today’s image models could do much better at assessing the quality of the unblurred image than a hand-crafted metric.
- yorwba 9mo agoProbably not the exact paper you have in mind, but... https://jspan.github.io/projects/text-deblurring/index.html https://jspan.github.io/projects/text-deblurring/index.html
- radlad 9mo agoRecord gyro motion at time of shutter?
- crazygringo 9mo ago> and the best the algorithm could do will be limited by the uncertainty in estimating those values That's relatively easy if you're assuming simple translation and rotation (simple camera movement), as opposed to a squiggle movement or something (e.g. from vibration or being knocked). Because you can simply detect how much sharper the image gets, and hone in on the right values.
- oulipo2 9mo agoThose unblurring methods look "amazing" like that but they are just very fragile, add even a modicum of noise to the blurred image and the deblurring will almost certainly completely fail, this is well-known in signal-processing
- srean 9mo agoNot necessarily. If, however, one just blindly uses the (generalized)inverse of the point-spread function, then you are absolutely correct for the common point-spread functions that we encounter in practice (usually very poorly conditioned). One way to deal with this is to cut off those frequencies where the signal to noise in that frequency bin is poor. This however requires some knowledge about the spectrum of the noise and signal. Weiner filter uses that knowledge to work out an optimal filter. https://en.wikipedia.org/wiki/Wiener_deconvolution https://en.wikipedia.org/wiki/Wiener_deconvolution If one doesn't know about the statistics of the noise, not about the point-spread function, then it gets harder and you are in the territory of blind deconvolution. So just a word of warning, if you a relying only on sprinkling a little noise in blurred images to save yourself, you are on very, very dangerous ground.
- matsemann 9mo agoDid you see the part where he saved with more and more lossy compression and showed that it still was recoverable?
- derektank 9mo agoCaptain Disillusion recently covered this subject in a more popular science format as well https://youtu.be/xDLxFGXuPEc https://youtu.be/xDLxFGXuPEc
- swiftcoder 9mo agoOne salient point not touched on here, is that an awful lot of the time, the things folks are blurring out specifically is text. And since we know an awful lot about what text ought to look like, we have a lot more information to guide the reconstruction...
- jlokier 9mo agoGood point, though you have to beware that text-aware image enhancement sometimes replaces characters with what it thinks is a more likely character from context. I've seen my phone camera's real-time viewfinder show text on a sign with one letter different from the real sign. If I wasn't looking at the sign at the same time, I might not have noticed the synthetic replacement.
- wffurr 9mo ago>> sometimes replaces characters with what it thinks is a more likely character from context Like the JBIG2 algorithm used in a zero click PDF-as-GIF exploit in iMessage a while back: https://projectzero.google/2021/12/a-deep-dive-into-nso-zero-click.html https://projectzero.google/2021/12/a-deep-dive-into-nso-zero... The vulnerability of that algorithm to character-swapping caused incorrect invoices, incorrect measurements in blueprints, incorrect metering of medicine, etc. https://www.dkriesel.com/en/blog/2013/0802_xerox-workcentres_are_switching_written_numbers_when_scanning https://www.dkriesel.com/en/blog/2013/0802_xerox-workcentres...
- gwbas1c 9mo agoAnd older people are very good at reading blurry text. (My grandmother always told me to "never get old." I wish I followed her advice.)
- jeremyscanvic 9mo agoBlur is perhaps surprisingly one of the degradations we know best how to undo. It's been studied extensively because there's just so many applications, for microscopes, telescopes, digital cameras. The usual tricks revolve around inverting blur kernels, and making educated guesses about what the blur kernel and underlying image might look like. My advisors and I were even able to train deep neural networks using only blurry images using a really mild assumption of approximate scale-invariance at the training dataset level [1]. [1] https://ieeexplore.ieee.org/document/11370202 https://ieeexplore.ieee.org/document/11370202
- dekhn 9mo agoI didn't learn about this trick (deconvolution) until grad school and even then it seemed like spooky mystery to me.
- criddell 9mo agoIsn't that roughly (ok, very roughly) how generative diffusion AIs work when you ask them to make an image?
- dangond 9mo agoI believe diffusion image models learn to model a reverse-noising function, rather than reverse-blurring.
- jeremyscanvic 9mo agoMost of them do but it's not mandatory and deblurring can be used [1] [1] Cold Diffusion: Inverting Arbitrary Image Transforms Without Noise, Bansal et al., NeurIPS 2023
- jeremyscanvic 9mo agoYou're absolutely right! Diffusion models basically invert noise (random Gaussian samples that you add independently to every pixel) but they can also work with blur instead of noise. Generally when you're dealing with a blurry image you're gonna be able to reduce the strength of the blur up to a point but there's always some amount of information that's impossible to recover. At this point you have two choices, either you leave it a bit blurry and call it a day or you can introduce (hallucinate) information that's not there in the image. Diffusion models generate images by hallucinating information at every stage to have crisp images at the end but in many deblurring applications you prefer to stay faithful to what's actually there and you leave the tiny amount of blur left at the end.
- esafak 9mo agoThis is classical deconvolution. Modern de-blurring implementations are DNN-based.
- jfaganel99 9mo agoHow do we apply this to geospatial face and licence plate blurs?
- unconed 9mo agoSorry but this post is the blind leading the blind, pun intended. Allow me to explain, I have a DSP degree. The reason the filters used in the post are easily reversible is because none of them are binomial (i.e. the discrete equivalent of a gaussian blur). A binomial blur uses the coefficients of a row of Pascal's triangle, and thus is what you get when you repeatedly average each pixel with its neighbor (in 1D). When you do, the information at the Nyquist frequency is removed entirely, because a signal of the form "-1, +1, -1, +1, ..." ends up blurred _exactly_ into "0, 0, 0, 0...". All the other blur filters, in particular the moving average, are just poorly conceived. They filter out the middle frequencies the most, not the highest ones. It's equivalent to doing a bandpass filter and then subtracting that from the original image. Here's an interactive notebook that explains this in the context of time series. One important point is that the "look" that people associate with "scientific data series" is actually an artifact of moving averages. If a proper filter is used, the blurryness of the signal is evident. https://observablehq.com/d/a51954c61a72e1ef https://observablehq.com/d/a51954c61a72e1ef
- jszymborski 9mo ago> Sorry but this post is the blind leading the blind, pun intended. Allow me to explain, I have a DSP degree. FWIW, this does not read as constructive.
- Sesse__ 9mo agoIt also makes no sense to me, and I also have a DSP degree. Of course moving averages (aka box blurs) filter out higher frequencies more than middle frequencies.
- unconed 8mo agoHomework assignment: make a bode plot of the convolution filters [1 1 1] vs [1 2 1]. Which one turns +1, -1, +1, -1, .. into all zeroes? You ought to know this because the fourier transform of [1 0 1] is a cosine of amplitude 2 on the complex unit circle e^(i*omega), which means the DC quefrency needs to be 2 to get the zeroes to end up at nyquist. The frequency response H(z) (= H(e^i*omega)) of [1 1 1] on the other hand will have its minimum somewhere in the middle. Also here's a post that will teach you how to sight read the frequency response of symmetric FIR filters off the coefficients: https://acko.net/blog/stable-fiddusion/ https://acko.net/blog/stable-fiddusion/
- chenmx 9mo agoWhat I find fascinating about blur is how computational photography has completely changed the game. Smartphone cameras now capture multiple exposures and computationally combine them, essentially solving the deblurring problem before it even happens. The irony is that we now have to add blur back artificially for portrait mode bokeh, which means we went from fighting blur to synthesizing it as a feature.
- deleted 9mo ago[deleted]
- zb3 9mo agoOk, what about gaussian blur?
- coldtea 9mo ago>But then, it’s not wrong to scratch your head. Blurring amounts to averaging the underlying pixel values. If you average two numbers, there’s no way of knowing if you’ve started with 1 + 5 or 3 + 3. In both cases, the arithmetic mean is the same and the original information appears to be lost. So, is the advice wrong? Well, if you have a large enough averaging window (like is the case with bluring letters) they have constraints (a fixed number of shapes) information for which is partly retained. Not very different from the information retained in minesweeper games.
- IshKebab 9mo agoIn practice unblurring (deconvolution) doesn't really work as well as you'd hope because it is usually blind (you don't know the blur function), and it is ill-conditioned, so any small mistakes or noise get enormously amplified.
- tflinton 9mo agoI did my thesis on using medioni's tensor voting framework to reconstruct noisy, blurry, low-res and the like images. It was sponsored by USGS on a data set that I thought was a bit of a bizarre use case. The approach worked pretty well, with some reasonable success at doing "COMPUTER ENHANCE" type computer vision magic. Later on talking with my advisor about the bizarrely mundane and uninteresting data sets we were working on from the grant he quipped that "You built a reasonable way of unblurring and enhancing unreadable images, the military doesn't care about this mundane use case." It then occurred that i'd been wildly ignorant to what I just spent 2 years of my life on.
- bmandale 9mo ago> This nets us another original pixel value, img(8). This makes it all seem really too pat. In fact, this probably doesn't get us the original pixel value, because of quantizing deleting information when the blur was applied, which can never be recovered afterwards. We can at best get an approximation of the original value, which is rather obvious given that we can vaguely make out figures in a blurred image already. > Nevertheless, even with a large averaging window, fine detail — including individual strands of hair — could be recovered and is easy to discern. The reason for this is that he's demonstrating a box blur. A box blur is roughly equivalent to taking the frequency transform of the image, then multiplying it by a sort of decaying sin wave. This achieves a "blur" in that the lowest frequency is multiplied by 1 and hence is retained, and higher frequencies are attenuated. However, visually we can see that a box blur doesn't look very good, and importantly it doesn't necessarily attenuate the very highest frequencies by much more than far lower frequencies. Hence it isn't surprising that the highest frequencies can be recovered in good fidelity. Compare a gaussian blur, which is usually considered to look better, and whose frequency transform focuses all the attenuation at the highest frequencies. You would be far less able to recover individual strands of hair in an image that was gaussian blurred. > Remarkably, the information “hidden” in the blurred images survives being saved in a lossy image format. Remarkable, maybe, but unsurprising if you understand that jpeg operates on basically the same frequency logic as described above. Specifically, it will be further attenuating and quantizing the highest frequencies of the image. Since the box blur has barely attenuated them already, this doesn't affect our ability to recover the image.
- mananaysiempre 9mo ago> You would be far less able to recover individual strands of hair in an image that was gaussian blurred. Frequency-domain deconvolution is frequency-domain deconvolution, right? It doesn’t really matter what your kernel is.
- bmandale 8mo agoAs I explain, you can't perfectly reverse these filters because of quantizing. The more the signal is attenuated, the more information is lost when quantizing. So yes, it does matter what your kernel is.
- jkuli 9mo agoA simple solution is to use a system of linear equations. Each row of a matrix is a linear equation, Ax = b Each row contains kernel weightings A across the image X, B is the blurred pixel color. The full matrix would be a terabyte, so take advantage of the zeros and use an efficient solve for X instead of inversion. Enhance really refers to combining multiple images. (stacking) Each pixel in a low res image was a kernel over the same high res image. So undoing a 100 pixel blur is equivalent to combining 10,000 images for 100x super resolution.
- siofra 9mo agoBeautiful walkthrough. The key insight people miss is that "looks unreadable to humans" and "is information-theoretically destroyed" are very different bars. The blur looks opaque because our visual system is bad at detecting small per-pixel differences, but the math does not care about our perception. Same principle applies to other "looks safe" redactions — pixelation with small block sizes, partial masking of credentials, etc. If you can describe the transform as a linear operation, there is probably a pseudoinverse waiting to undo it.