from skimage import data, color, io
from matplotlib import pyplot as plt
import numpy as np
import math
image=io.imread('C:/Users/xpp/Desktop/Lena.png')
r=image[:,:,0]
g=image[:,:,1]
b=image[:,:,2]
#样本区域
r_templat=r[0:0,460:460]
r_template_u=np.mean(r_template)
r_template_d=0.0
for i in range(r_template.shape[0]):
for j in range(r_template.shape[1]):
r_template_d=r_template_d+(r_template[i,j]-r_template_u)*(r_template[i,j]-r_template_u)
r_template_d=math.sqrt(r_template_d/r_template.shape[0]/r_template.shape[1])
r_cut=np.zeros(r.shape,dtype='uint8')
for i in range(r.shape[0]):
for j in range(r.shape[1]):
if r[i,j]>=(r_template_u-1.25*r_template_d) and r[i,j]<=(r_template_u+1.25*r_template_d):
r_cut[i,j]=1
image_cut=np.zeros(image.shape,dtype='uint8')
for i in range(r.shape[0]):
for j in range(r.shape[1]):
if r_cut[i,j]==1:
image_cut[i,j,:]=image[i,j,:]
plt.figure()
plt.axis('off')
plt.imshow(image)
plt.figure()
plt.axis('off')
plt.imshow(r)
plt.figure()
plt.axis('off')
plt.imshow(g)
plt.figure()
plt.axis('off')
plt.imshow(b)
plt.figure()
plt.axis('off')
plt.imshow(r_cut)
plt.figure()
plt.axis('off')
plt.imshow(image_cut)
plt.show()
算法:图像高光消除是进行高光提取并弱化背景区域。
文献:陈锻生,刘政凯. (2003). 彩色图像人脸高光区域的自动检测与校正方法. 软件学报, 14(11), 7.
本文分享自 图像处理与模式识别研究所 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!