Tweaking image pipeline hardware (e.g.) new sharpening weights? - General Discussion and Assistance - CHDK Forum

Tweaking image pipeline hardware (e.g.) new sharpening weights?

  • 1 Replies
Tweaking image pipeline hardware (e.g.) new sharpening weights?
« on: 09 / September / 2008, 16:58:10 »

I have done some browsing of the docs, but haven't seen anything yet that answers this question. (If I just missed it, then a link to the relevant docs would be awesome.)

Basically, the general ARM processor is powerful enough for simple features, but not for doing heavy image processing operations. For example, suppose I wanted to change the filtering weights that the camera uses when filtering images. The camera has various fixed-function hardware blocks to perform these sorts of operations (sharpening, noise reduction, etc.), and changing the filter weights could tweak these algorithms.

The question is, is it possible to tweak the processing that these hardware blocks are doing? Are there any specs available for what image processing hardware different camera models have, and the different knobs that are available to tune them? Of course, I'm sure that there are no extensive docs of this internal Canon info, but has anyone puzzled out any tweaks to the image pipeline that can be made?



Offline reyalp

  • ******
  • 13950
Re: Tweaking image pipeline hardware (e.g.) new sharpening weights?
« Reply #1 on: 09 / September / 2008, 23:13:39 »
If this sort of thing can be tuned at all, it would probably involve reverse engineering what canon firmware puts in the various MMIO registers that control the hardware. This is not impossible, but its not trivial either. I would assume that most of this is proprietary to canon (or their suppliers) with no public documentation at all, although it's possible they've used some third party components that are documented somewhere. The ARM documentation site has specs for many of their devices. Investigating whether any of these can be identified by their register usage is on my list of things I'd like to look into, but this is more likely to be things like DMA or LCD controllers than the imaging hardware.

There is also more risk involved in poking hardware registers you don't really understand compared to running general code on the CPU. You are probably pretty safe if you proceed cautiously, but bricking or physical damage aren't completely out of the question.

For specific things like noise reduction or sharpening, I'd try to figure out where it happens in the ARM code, and after verifying the actual work doesn't happen in ARM code, look at the MMIO use that happens beforehand. This is frequently identifiable by access to addresses around 0xC0200000 and 0xC0400000. If you can find a setting in the canon options or chdk code that affects the thing you want to change somehow, that's an obvious benefit.
Don't forget what the H stands for.


Related Topics