图像处理-线性拉伸
图像领域:拉伸即:灰度图拉伸,与直方图均衡化类似,但是也不同!!!
线性拉伸:1)直接线性拉伸;2)裁剪线性拉伸;3)分段式拉伸。
1)直接线性拉伸:(直接归一化,然后放缩到指定大小范围)
代码:
import cv2
import numpy as np
gray=np.float( cv2.imread(**) )
gray_new=( gray-gray.min() ) / ( gray.max()-gray.min() ) # 归一化到0-1
maxout=255
minout=0gray_out=gray_new * (maxout -minout) # maxout=255 minout=0
gray_out=np.uint8( gray_out )
2)裁剪线性拉伸:(去掉2%百分位以下的数,去掉98%百分位以上的数,上下百分位数一般相同,并设置输出上下限)
import cv2
import numpy as np
gray=np.float( cv2.imread(**) )
d2=np.percentile( gray,2 )
u98=np.percentile( gray,98 )
maxout=255
minout=0
gray_new=minout + ( (gray-d2) / (u98-d2) ) * (maxout - minout)
gray_new[gray_new < minout]=minout
gray_new[gray_new > maxout]=maxout
gray_out=np.uint8(gray_new)
3)分段式 线性拉伸(百度图片)
分段数学公式,按照公式求出前后灰度
即: (横轴:拉伸前灰度,纵轴:拉伸后灰度,一一对应)。
####################################################
envi 中对应的线性拉伸实现:
线性拉伸 2%: 即: 2)裁剪线性拉伸
ENVI对打开的一幅遥感影像默认是2%的线性拉伸,当然只是显示效果发生变化,亮度得到提升,但是像元值并没有发生改变;这里的Linear2%是指将直方图累积在2%至98%之间的像元值拉伸,取直方图累积在2%处对应的光谱值为MinValue,98%处对应的光谱值为MaxValue,那么可解释为如果像元值大于MinValue且小于MaxValue,则将其拉伸至0-255;如果像元值小于MinValue,那么将其改为MinValue;如果像元值大于MaxValue,那么将其改为255。
线性拉伸 0-255:即:1)直接线性拉伸
####################################################