Contrast stretching in local regions of an image

十年热恋 提交于 2019-12-06 14:03:52

You might get the results you are looking for with detail enhancement filters, using a large filter radius. A popular example of detail enhancement is the "Clarity" effect in Adobe Lightroom. What these algorithms do actually amounts to increasing contrast locally.

The Guided Filter can be used for detail enhancement (see page 10 of the linked paper), and it may be sufficiently fast for video, in contrast to the better known Bilateral Filter. It is also relatively easy to implement, at least for grayscale images or for per-channel operation. Matlab code for experimenting is here, it contains a detail enhancement example, if I recall correctly.

Theory: Roughly, the idea is to add a high-pass filtered version of the image to the original image. If you do this with a small high-pass kernel you do sharpening, if you use a large kernel (letting through more frequencies) you do detail enhancement. The Guided Filter is a clever method of avoiding halo artifacts which occur at sharp light-to-dark boundaries when you approach the problem with simple high-pass filters.

If you have the whole range of colors, I suggest you decide how many pixels are you willing to "sacrifice" as there will be some saturation. You can still use the contrast equation (from your link)

newValue = 255 * (oldValue - minValue)/(maxValue - minValue)

The only difference is you manually decide minValue and maxValue. That way everything below minValue will be 0; similary for 255.

Upgrade - just decide on the percentage you are willing to use and automatically set the boundaries.

Edit - that "local" got me thinking about an "advanced" version. Maybe you could take a look at the histogram (with 256 bins) and see if there are some "holes". Lets say you only have values from 0 to 50 and from 205 to 255. You can then stretch the lower values to 100 and the upper down to 155. The only problem is worse contrast between the lower and the upper values.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!