图像处理:Python代码计算图像对比度

一 图像对比度理论知识
1 定义
对比度:通俗地讲就是亮暗的拉伸对比程度,通常表现了图像画质的清晰程度。对比度的计算公式如下:

å¨è¿éæå¥å¾çæè¿°
2 计算案例

å¨è¿éæå¥å¾çæè¿°

解释:

每个小括号的数据是怎么来的?按四近邻计算,比如第一个小括号:以第一行第一列为中心,上下左右分别与这个中心值相减再平方,然后加在一起,即:(2-1)2+(3-1)2;第二个小括号即:(1-3)2+(9-3)2+(1-3)2
最后的48是怎么来的:其实就是总的平方次个数
二 代码实现
'''上面案例和下面代码都是使用四近邻方式计算'''
from cv2 import cv2
import numpy as np
def contrast(img0):   
    img1 = cv2.cvtColor(img0, cv2.COLOR_BGR2GRAY) #彩色转为灰度图片
    m, n = img1.shape
    #图片矩阵向外扩展一个像素
    img1_ext = cv2.copyMakeBorder(img1,1,1,1,1,cv2.BORDER_REPLICATE) 
    rows_ext,cols_ext = img1_ext.shape
    b = 0.0
    for i in range(1,rows_ext-1):
        for j in range(1,cols_ext-1):
            b += ((img1_ext[i,j]-img1_ext[i,j+1])**2 + (img1_ext[i,j]-img1_ext[i,j-1])**2 + 
                    (img1_ext[i,j]-img1_ext[i+1,j])**2 + (img1_ext[i,j]-img1_ext[i-1,j])**2)

    cg = b/(4*(m-2)*(n-2)+3*(2*(m-2)+2*(n-2))+2*4) #对应上面48的计算公式
    print(cg)
   
img0 = cv2.imread('1301022016GF2DOM_2535_5118_0_copy1.jpg')
contrast(img0)
img1 = cv2.imread('1301022016GF2DOM_2535_5118_0_copy2.jpg')
contrast(img1)
img2 = cv2.imread('1301022016GF2DOM_2535_5118_0_copy3.jpg')
contrast(img2)
img3 = cv2.imread('1301022016GF2DOM_2535_5118_0_copy4.jpg')
contrast(img3)

结果如下:
20906.021314691152
26861.281793266557
27822.16401641625
28115.63633277685
结论:图片越清晰,对比度越大

使用如下图片(因为下面图片大小被压缩,所以计算结果可能不一致,但大小顺序一致)
==

å¨è¿éæå¥å¾çæè¿°

å¨è¿éæå¥å¾çæè¿°

å¨è¿éæå¥å¾çæè¿°

å¨è¿éæå¥å¾çæè¿°
--------------------- 
作者:Ethan的博客 
来源:CSDN 
原文:https://blog.csdn.net/zsc201825/article/details/89645190 
版权声明:本文为博主原创文章,转载请附上博文链接!

https://blog.csdn.net/duanyajun987/article/details/82663367

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值