【问题标题】:Formula for gamma correction伽马校正公式
【发布时间】:2013-01-31 04:08:04
【问题描述】:

我想做一些图像处理,其中伽马校正很重要。我在网上搜索了通用公式,但找不到适合我需要的公式。

【问题讨论】:

  • 当您没有告诉我们这些具体是什么,或者您找到的答案有什么问题时,很难给出“符合您的需求”的答案。

标签: image-processing


【解决方案1】:

也是相当“通用”的问题。如果您对特定编程语言的解决方案不感兴趣,则可以使用此公式:

g'(g) = w_max * ((g - w_min) / (w_max - w_min)) ^ gamma + w_min

w_max 和 w_min 是图像中的最大和最小强度值,g 是 gamme 校正前的强度值。

【讨论】:

  • Gamma 校正对偏移量很敏感,因此在大多数情况下,加减 w_min 会得到错误的结果,除非 w_min 恰好为零。
  • 我会说它应该是 "(wmax - wmin) * pow( (g - wmin) / ( wmax - wmin), 1/gamma) + wmin" 以获得范围内的输出值wmin..wmax 而 pow 值从 0.0 移动到 1.0。
【解决方案2】:

在谷歌快速搜索伽玛校正 matlab(我在大学使用 matlab 进行图像处理)后,我发现了这个页面 (http://www.mathworks.com/matlabcentral/fileexchange/5347-gamma-correction) 和这段代码:

Err = 0;
if nargin < 2
    GammaValue = 1;
    disp('Default value for gamma = 1');
else if nargin ==2 & GammaValue < 0
     GammaValue = 1;
     disp('GammaValue < 0, Default value considered, Gammavalue = 1');
else if nargin > 2
     disp('Error : Too many input parameters');
     Err = 1;
end
if Err == 1 
x = imread(Image);
x = double(x);
Correction = 255 * (x/255).^ GammaValue; 
end;

【讨论】:

    猜你喜欢
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 2011-09-28
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    相关资源
    最近更新 更多