[HN Gopher] Image Processing in C (2000) [pdf]
       ___________________________________________________________________
        
       Image Processing in C (2000) [pdf]
        
       Author : nill0
       Score  : 127 points
       Date   : 2025-03-14 03:30 UTC (3 days ago)
        
 (HTM) web link (homepages.inf.ed.ac.uk)
 (TXT) w3m dump (homepages.inf.ed.ac.uk)
        
       | SanjayMehta wrote:
       | You might find this interesting as well:
       | 
       | https://www.spinroot.com/pico
        
         | numba888 wrote:
         | 2000-2003, both are pre-historic. We have neural networks now
         | to do things like upscaling and colorization.
        
           | vincenthwt wrote:
           | Yes, those methods are old, but they're explainable and much
           | easier to debug or improve compared to the black-box nature
           | of neural networks. They're still useful in many cases.
        
             | earthnail wrote:
             | Only partially. The chapters on edge detection, for
             | example, only have historic value at this point. A tiny NN
             | can learn edges much better (which was the claim to fame of
             | AlexNet, basically).
        
               | 4gotunameagain wrote:
               | Classical CV algorithms are always preferred over NNs in
               | every safety critical application.
               | 
               | Except Self driving cars, and we all see how that's
               | going.
        
               | CamperBob2 wrote:
               | Self-driving cars are a political problem, not a
               | technical one. Our roads don't work especially well for
               | human drivers, so I don't know why anyone expected
               | machines to achieve perfection.
        
               | grumbelbart2 wrote:
               | That absolutely depends on the application. "Classic"
               | (i.e. non-NN) methods are still very strong in industrial
               | machine vision applications, mostly due to their
               | momentum, explainability / trust, and performance /
               | costs. Why use an expensive NPU if you can do the same
               | thing in 0.1 ms on an embedded ARM.
        
               | HelloNurse wrote:
               | A NN that has been trained by someone else on unknown
               | data with unknown objectives and contains unknown defects
               | and backdoors can compute _something_ fast, but why
               | should it be trusted to do my image processing? Even if
               | the NN is built in-house overcoming trust issues,
               | principled algorithms have general correctness proofs
               | while NNs have, at best, promising statistics on
               | validation datasets.
        
               | earthnail wrote:
               | This doesn't match my experience. I spent a good portion
               | of my life debugging SIFT, ORB etc. The mathematical
               | principles don't matter that much when you apply them;
               | what matters is performance of your system on a test set.
               | 
               | Turns out a small three-layer convnet autoencoder did the
               | job much better with much less compute.
        
               | HelloNurse wrote:
               | You cannot prove that an algorithm does what you want,
               | unless your understanding of what you want is quite
               | formal. But you can prove that an algorithm makes sense
               | and that it doesn't make specific classes of mistake: for
               | example, a median filter has the property that all output
               | pixel values are the value of some input pixel, ensuring
               | that no out of range values are introduced.
        
               | jononor wrote:
               | Few customers care about proofs. If you can measure how
               | well the method work for the desired task, that is most
               | cases sufficient and in many cases preferred over proofs.
        
               | zwieback wrote:
               | For hobbyists that's enough, for engineers often okay (I
               | find myself in that situation) but for scientists "good
               | enough" means nothing.
               | 
               | Optical metrology relies on accurate equations how a
               | physical object maps to the image plane so in that case
               | analytical solutions are necessary for subpixel accuracy.
               | 
               | I'm worried about how often kids these days discount
               | precise mathematical models for all use cases. Sure, you
               | get there most of the time but ignore foundational math
               | and physics at your own peril.
        
               | fsloth wrote:
               | "The chapters on edge detection, for example, only have
               | historic value at this point"
               | 
               | Are there simpler, faster and better edge detection
               | algorithms that are not using neural nets?
        
               | frankie_t wrote:
               | I wonder if doing classical processing of real-time data
               | as a pre-phase before you feed into NN could be
               | beneficial?
        
               | TimorousBestie wrote:
               | Yes, it's part of the process of data augmentation, which
               | is commonly used to avoid classifying on irrelevant
               | aspects of the image like overall brightness or relative
               | orientation.
        
           | rahen wrote:
           | I see it the same way I see 'Applied Cryptography'. It's old
           | C code, but it helps you understand how things work under the
           | hood far better than a modern black box ever could. And in
           | the end, you become better at cryptography than you would by
           | only reading modern, abstracted code.
        
           | jandrese wrote:
           | Last time I was doing image processing in C I was doing
           | quantization of the colorspace using the technique out of a
           | paper from 1982. Just because a source is old doesn't mean it
           | is wrong.
        
       | TrackerFF wrote:
       | 310 pages of text, 500 pages of C code in the appendix - this
       | could need a supplemental github page.
        
         | typolisp wrote:
         | The source code is at https://github.com/Dwayne-Phillips/CIPS
        
           | danjl wrote:
           | Nice reference! The URL in the preface is dead.
        
       ___________________________________________________________________
       (page generated 2025-03-17 23:01 UTC)