
import cv2
import numpy as np
from skimage import data,color
from matplotlib import pyplot as plt
img=cv2.imread('C:/Users/xpp/Desktop/Lena.png')#原始图像
cv2.imshow("original",img)
grayimg=color.rgb2gray(img)#将彩色图片转换为灰度图片
rows,cols=grayimg.shape
labels=np.zeros([rows,cols])
for i in range(rows):
for j in range(cols):
if(grayimg[i,j]<0.4):
labels[i,j]=0
elif(grayimg[i,j]<0.8):
labels[i,j]=1
else:
labels[i,j]=2
psdimg=color.label2rgb(labels)#灰度分层
cv2.imshow("result",psdimg)
cv2.waitKey()
cv2.destroyAllWindows()

算法:灰度分层是按照灰度值范围划分为不同的层级,然后给每个层级赋予不同的颜色,从而增强不同层级的对比度。灰度分层技术将灰度图像转换为伪彩色图像,且伪彩色图像的颜色种类数目与强度分层的数目一致。
令f(x,y)为位于空间位置(x,y)处的像素的灰度值(强度),[0,L]为图像灰度值范围,其中0代表黑色,L代表白色。
假定分割值为:
l1,l2,l3…,lM(0<l1<l2<l3<…<lM<L)
则将图像灰度划分为M+1个区间V1,V2,V3,…,VM,VM+1。
灰度值到彩色的映射关系为:
f(x,y)=ck
f(x,y)∈V k(k∈[1,M+1])
其中,ck是与第k个灰度区间Vk有关的颜色。

灰度区间[0,l1)被映射为颜色c1,灰度区间[l1,l2)被映射为颜色c2,灰度区间[lM-1,lM)被映射为颜色cM,灰度区间[lM,L]被映射为颜色cM+1。
本文分享自 图像处理与模式识别研究所 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!