强度归一化,matlab
Posted
技术标签:
【中文标题】强度归一化,matlab【英文标题】:Normalization of intensity, matlab 【发布时间】:2011-10-11 03:01:59 【问题描述】:我有想要在平面上投影的真实世界 3D 点。大多数强度 [0-1] 值落在较低区域(接近零)。
请看下面附上的“之前”的图片。
我试图规范化值
Col_=强度; % 之前
最大值(Col_)=0.46;最小值(Col_)=0.06;
Col=(Col_-min(Col_))/(max(Col_)-min(Col_));% 后
最大(列)=1;最小(列)=0;
但我仍然有最大值落在较低区域(接近零)。 归一化后请看第二张图。
结果仍然是大部分黑色区域。任何建议。我怎样才能伸展我的强度信息。 问候,!
【问题讨论】:
也许这会有所帮助(规范化部分):***.com/questions/1719048/… 我认为您应该按照@ephsmith 的建议采用对数缩放。线性缩放对您的情况没有多大帮助。 【参考方案1】:看起来您已经通过线性缩放尽可能多地进行了标准化。如果您想获得更多的对比度,您将不得不放弃保留原始缩放并使用非线性均衡。
例如:http://en.wikipedia.org/wiki/Histogram_equalization
如果你有图像处理工具箱,matlab 会帮你做的: http://www.mathworks.com/help/toolbox/images/ref/histeq.html
看起来您在第一个 bin 之外的值非常少,如果您不需要保留强度的唯一性,您可以按更大的比例缩放并剪掉超过 1 的少数值。
【讨论】:
【参考方案2】:当我标准化强度时,我会这样做:
Col = Col - min(Col(:));
Col = Col/max(Col(:));
这会将您的数据点标准化为范围 [0,1]。
现在,由于您有许多小值,您也许可以通过对数缩放更好地做出小的更改。
Col_scaled = log(1+Col);
使用此类数据进行线性缩放很少适合我。使用log
函数类似于为可视化目的调整伽玛。
【讨论】:
【参考方案3】:我认为你在这里唯一能做的就是缩小范围。 标准化后执行以下操作:
t = 0.1;
Col(Col > t) = t;
这只会截断数据的范围,这对于您正在做的事情可能已经足够了。然后,如果您愿意,您可以再次重新规范化。
【讨论】:
@Dima 我试过这样 Col_= log(1+Col_); Col_(Col_>0.05)=0.05; Col=(Col_-min(Col_))/(max(Col_)-min(Col_));它可以工作,但是程序如何自动找到这个限制。任何想法。 @shahbaba 该限制可能取决于您不想更改的值的百分比。最简单的做法是将阈值设置为数据的中位数。然后前 50% 的值将映射为 1。如果您想保持更多数据完好无损,例如 90%,那么您应该对数据进行排序并设置阈值,以便只有前 10% 映射到 1。 @Dima:这在思想上与IMADJUST 相似(重新映射,使得一定百分比的值在高/低值处饱和)以上是关于强度归一化,matlab的主要内容,如果未能解决你的问题,请参考以下文章