'''上面案例和下面代码都是使用四近邻方式计算'''
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
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)
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