相关文章推荐
眼睛小的青蛙  ·  c# - 504 Gateway ...·  1 年前    · 
乐观的针织衫  ·  python3 ...·  1 年前    · 

2 计算案例

  1. 每个小括号的数据是怎么来的?按四近邻计算,比如第一个小括号:以第一行第一列为中心,上下左右分别与这个中心值相减再平方,然后加在一起,即:(2-1) 2 +(3-1) 2 ;第二个小括号即:(1-3) 2 +(9-3) 2 +(1-3) 2
  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) / 1.0   # 除以1.0的目的是uint8转为float型,便于后续计算
    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)

结果如下(供参考):
13.12
15.19
16.24
18.21
结论:图片越清晰,对比度越大

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

一 图像对比度理论知识1 定义对比度:通俗地讲就是亮暗的拉伸对比程度,通常表现了图像画质的清晰程度。对比度的计算公式如下:2 计算案例解释一下最后的48是怎么来的:其实就是总的平方次数二 代码实现from cv2 import cv2import numpy as npdef contrast(img0): img1 = cv2.cvtColor(img0, cv...
对比度调整算法说明(完整python代码在文末): 本算法主要是对RGB空间进行调整。设定合适的RGB阈值,并在此阈值基础上计算出合适的调整系数进行对比度调整。阈值作为对比度调整依据,当对比度调整为-1时,图像RGB各分量都等于阀值,图像呈全灰色,灰度图上只有一种颜色,即阀值灰度。其算法实现如下: 1) 比较当前像素点三维颜色值与阈值的大小,并获取其差值。 2) 当增大对比度时,...
算法对图片对比度和亮度的调整一般通过下面公式计算: g(x,y) = a*f(x,y)+bf(x,y)代表源图像x行,y列的像素点的c通道的数值 g(x,y)代表目 标图像x行,y列的像素点的c通道的数值 a参数(a>0)表示放大的倍数(一般在0.0~3.0之间) b参数一般称为偏置,用来调节亮度 代码实现Python&OpenCV代码实现上述算法a=1.2 b=100 for i in
文章目录第二章 数字图像基础1、用程序实现同时对比度实验2、用程序实验空间分辨率变化效果3、用程序实验幅度分辨率变化效果 第二章 数字图像基础 这几个题目网上有很多MATLAB版的解答,这里自己写了一个python的版本,实现的思路是基本一致的 import matplotlib.pyplot as plt import matplotlib.image as img import numpy as np import math %matplotlib inline 1、用程序实现同时对比度实验 程序代码: # set image size height = 256 weight
如果需要检测到图像里面的边缘,首先我们需要知道边缘处具有什么特征。对于一幅灰度图像来说,边缘两边的灰度值肯定不相同,这样我们才能分辨出哪里是边缘,哪里不是。因此,如果我们需要检测一个灰度图像的边缘,我们需要找出哪里的灰度变化最大。显然,灰度变化越大,对比度越强,边缘就越明显。那么问题来了,我们怎么知道哪里灰度变化大,哪里灰度变化小呢?在数学中,与变化率有关的就是导数。如果灰度图像的像素是连续的(实际不是),那么我们可以分别原图像G对x方向和y方向求导数,获得x方向的导数图像Gx和y方向的导数图像Gy。Gx和Gy分别隐含了x和y方向的灰度变化信息,也就隐含了边缘信息。如果要在同一图像上包含两个方
本文主要内容: 负片、调节图片亮度与对比度图像裁剪、图像尺寸变换、图像旋转、图像添加噪声、图像模糊与滤波 所有代码已经在Spyder上编译通过的,python版本是3.7,希望能有帮助 参考书目:《Python人脸识别——从入门到工程实践》王天庆著 1.负片(相机底片) import cv2 import numpy as np img=cv2.imread(1.png) cv2.imshow(lala,img) cv2.waitKey(1000) print(img) height=img.shape[0] width=img.shape[1] negative_file=np.z