Python图像处理代码,数字图像处理python代码下载
内容1、色调和色彩调整2、色调调整和色彩平衡3、色彩直方图均衡化
OpenCV,实验环境:pycharm anaconda,参考《数字图像处理》 gxdyc第4版(初学图像处理和Python,错误请指出~
相反,经过色调和颜色校正的彩色图像可以视为不同颜色通道图像的叠加,每个通道都可以像灰度图像处理一样进行操作。Numpy有强大的矩阵运算功能,处理彩色图像也很方便。如果采用伽马变换,则需要在图像较亮时选择1,压缩高灰度级,在图像较暗时选择1,以扩大低灰度级,提高对比度。
使用S函数(对比度扩展变换函数)并选择合适的参数(斜率),可以获得高对比度。s函数的表达式为s=t (r)=1/(1) m/r) e)。
s控制输出灰度,R控制输入灰度,M控制控制单元的中值灰度,E控制函数的斜率。形状如下。
代码如下。
-代码:UTF-8- 作者:有嘉豪日期:2021年11月05日 Importmatplotlib。pyplotappltimportcv 2 ascvimportnumpyasnp 2 Read 2hsi #,输入汉字PLT . RC params[ font . sans-serif ]=[ sim hei ]PLT . RC params[ axes。]显示的坐标号字体和大小def label _ def (:PLT。x张票(font properties= Timesnewman ,size=8) PLT。y票)定义字体属性=) size=8) # PLT。轴(off)关闭坐标,可选if _ name _=(_ main _) 1)读取彩色图像-色调校正伽玛转换处理img _ gama=NP . power(img _ orig . astype(NP . float 32),1.5) #图像清晰压缩高灰度级temp 1=img _ gama-NP . min(img _ gama)img _ gama=temp 1/NP . max(temp 1)#对比度扩展传递函数med=NP.median () img_orig1e-6)linspace (img _ orig.minspace1.5)伽玛函数x2=NP。Lin space(img _ orig . min space 1.5)(temg _ tempbgr 2 rgimg用于显示NP.max(temp2))。Plt.title(原图),PLT . im show)cv . CVT color(img _ orig,cv。COLOR_BGR2RGB),PLT.axis (off)) PLT。工厂工厂cv。COLOR_BGR2RGB)、PLT.axis ) PLT.subplot ) 233)、PLT.axis ) off ) ) cv.color _ bgr 2
标题( s=r * * (1.5)),PLT绘图(x1,y1),PLT。Grid(),label _ def () PLT。子情节(236),情节。标题( s=1/(1 (m/r) *)
第二,色调校正和色彩平衡仅仅通过色调校正并不总能得到满意的效果。常见的处理方法有:
(1)色调校正;(2)色彩平衡校正。
比如下图是暗的,那么就用1(0.5)的伽马变换来扩展低灰度。然而,变换后的图像(前面的石头和杂草)是红色的,因此它进入CMY空间以平衡M分量。代码如下:(使用的rgb2hsi和hsi2rgb是我自己定义的两个颜色空间变换函数。请看我的另一篇文章HSI和色彩空间的RGB变换)
#连接上面的代码#-Img _ Stone=cv . im read( bottom _ left _ stream . TIF ,1) #伽玛变换处理Stone _ gama=NP . power(Img _ Stone . astype(NP . float 32),0.5) #图像较暗。如果采用幂变换,1,拉伸低灰度,选择交互temp=stone _ gama-NP . min(stone _ gama)stone _ gama=temp/NP . max(temp)img _ cmy=1-cv . CVT color(stone _ gama,cv.color _ bgr2rgb) c,m,Y=cv . split(img _ cmy)# print(m . shape)m _ gama=NP . power(m . astype(NP . float 32),1.08 compress temp _ m=m _ gama-NP . min(m _ gama)m _ gama=(temp _ m/(NP . max(temp _ m))out _ stone=1-CV . merge((c,m _ gama,y))PLT . download . Plt.imshow(CV . CVT color(img _ stone,cv.color _ bgr2rgb))、PLT.axis (off) PLT.subplot (132)、PLT.title(伽马变换)、PLT . im show(中Color _ BGR2RGB))、PLT。轴(“关闭”)PLT。子情节(133),情节。标题(“色彩平衡(深红色)”),PLT。IM Show (out _ stone),PLT。轴(“关闭”)PLT。显示(
第三,颜色直方图均衡化与灰度图像相同。可以直接使用函数cv2.equalizeHist(img)来操作RGB或HSI空间的每个平面的I分量。但是这个函数的运算对象的灰度是8bit,需要注意的是[0,1]的灰度要校准到[0,255]。
经过HSI空间的I分量直方图均衡后,H和S分量不会改变,但图像的整体颜色会受到影响。通常,首先执行均衡,然后调整饱和分量s。
代码如下:
#-Caster=RGB 2 HSI(img _ Caster)img=NP . float 32(Caster)I=NP . uint 8(255 * I)equ _ I=(cv。equalizehist (i))/255.0 #均衡亮度分量# plt.subplot(121) plt.imshow(i, gray )# PLT . im show(Equ _ I, gray )# PLT . show()img _ Equ 1=HSI 2r GB(cv . merge((h,s,Equ _ I)) # add _ s=np.where ((s * 2) 1,s,(s * 1.5)) #增加饱和度add _ s=np。IM Show (CV。CVTColor (img _ caster,CV。color _ bgr2rgb))、PLT。轴(“关闭”)PLT。子情节(132),情节。Title (I分量直方图均衡)、Plt.imshow (img _ eq1)、PLT.axis (off) PLT.subplot (133)、PLT . title( balance I increments )、PLT.imshow (img _ eq2)、PLT.axis (off) PLT.show。
欢迎大家批评指正。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。