『youcans 的 OpenCV 例程200篇 - 总目录』
【OpenCV 例程200篇】41. 图像的灰度变换(灰度级分层)
线性灰度变换将原始图像灰度值的动态范围按线性关系扩展到指定范围或整个动态范围。
分段线性变换函数可以增强图像各部分的反差,增强感兴趣的灰度区间、抑制不感兴趣的灰度级。
灰度级分层可以突出图像中特定的灰度级区间,可以对灰度级进行分层处理。
灰度级分层有两种常用方案:一种方案是二值处理,将感兴趣的灰度级区间设为较大的灰度值,其它区间设为较小的灰度值;另一种方案是窗口处理,将感兴趣的灰度级区间设为较大的灰度值,其它区间不变。
两种灰度级分层方案的分段变换公式分别为:
D t 1 = { d , a ≤ D ≤ b c , e l s e D t 2 = { d , a ≤ D ≤ b D , e l s e Dt_1 = \begin{cases} d &, a \leq D \leq b\\ c &, else \end{cases} \\ Dt_2 = \begin{cases} d &, a \leq D \leq b\\ D &, else \end{cases} Dt1={dc,a≤D≤b,elseDt2={dD,a≤D≤b,else
式中,D 为原始图像的灰度值,Dt1、Dt2 为灰度变换后的图像灰度值。
例程:1.53 分段线性灰度变换(灰度级分层)
例程 1.53 对于肾部区域主动脉血管造影图像,采用灰度级分层技术增强主要血管,将感兴趣的灰度级区间显示为白色。方案一进行二值化处理,将其它灰度区间设为黑色;方案二则保留其它灰度区间的灰度值不变。
# # 1.53 分段线性灰度变换 (灰度级分层) # Gray layeredimgGray = cv2.imread("../images/Fig0312a.tif", flags=0) # flags=0 读取为灰度图像width, height = imgGray.shape[:2] # 图片的高度和宽度# Gray layered strategy 1: binary imagea, b = 155, 245 # 突出 [a, b] 区间的灰度imgLayer1 = imgGray.copy()imgLayer1[(imgLayer1[:,:]<a) | (imgLayer1[:,:]>b)] = 0 # 其它区域:黑色imgLayer1[(imgLayer1[:,:]>=a) & (imgLayer1[:,:]<=b)] = 255 # 灰度级窗口:白色# Gray layered strategy 2: grayscale imageimgLayer2 = imgGray.copy()imgLayer2[(imgLayer2[:,:]>=a) & (imgLayer2[:,:]<=b)] = 255 # 灰度级窗口:白色,其它区域不变plt.figure(figsize=(10, 6))plt.subplot(131), plt.imshow(imgGray, cmap='gray'), plt.title('Original'), plt.axis('off')plt.subplot(132), plt.imshow(imgLayer1, cmap='gray'), plt.title('Binary layered'), plt.axis('off')plt.subplot(133), plt.imshow(imgLayer2, cmap='gray'), plt.title('Grayscale layered'), plt.axis('off')plt.show()
(本节完)
版权声明:
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/125112487)
Copyright 2022 youcans, XUPT
Crated:2021-11-22
【第4章:灰度变换与直方图】
39. 图像灰度的线性变换
40. 图像分段线性灰度变换
41. 图像的灰度变换(灰度级分层)