当前位置:  开发笔记 > 编程语言 > 正文

如何规范化图像?

如何解决《如何规范化图像?》经验,为你挑选了2个好方法。

如果我有一系列像素,范围从-500到+1000,我如何规范化相同渐变上的所有像素,使它们落在特定范围(比如0到255)之间?



1> Paul Dixon..:

像这样的一些伪代码会将值从一个范围线性地缩放到另一个范围

oldmin=-500
oldmax=1000
oldrange=oldmax-oldmin;

newmin=0
newmax=255;
newrange=newmax-newmin;

foreach(oldvalue)
{
    //where in the old scale is this value (0...1)
    scale=(oldvalue-oldmin)/oldrange;

    //place this scale in the new range
    newvalue=(newrange*scale)+newmin
}



2> shoosh..:

你的问题不是很清楚,所以我假设你正在进行某种图像处理,你得到的结果是从-500到1000的值,现在你需要将颜色保存到每个值的文件中需要在0到255之间.

你如何做到这一点真的非常依赖于应用程序,结果的真正含义是什么以及你想要做什么.两个主要选项是:

钳制值 - 0以下的任何值替换为0,255以上的任何值替换为255.例如,如果图像处理是某种实际上不应达到这些值的插值,则需要执行此操作.

线性归一化 - 线性地将您的最小值设置为0,将最大值线性化为255.当然,您首先需要找到最小值和最大值.你做:

v = (origv - min)/(max - min) * 255.0

这样做首先将值映射到[0,1]然后将它们拉回到[0,255].

第三种选择是在这两个选项之间进行混合和匹配.您的应用程序可能要求您将负值视为不需要的值,并将它们钳制为0,将正值钳位到线性映射到[0,255].

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有