图像处理-线性拉伸

图像领域:拉伸即:灰度图拉伸,与直方图均衡化类似,但是也不同!!!

线性拉伸: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=0

gray_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)直接线性拉伸


####################################################


猜你喜欢

转载自blog.csdn.net/leilei18a/article/details/80180483