图片专栏——曝光度调整相关

  1. 假设条件

    • 如果两张图片是同一场景或内容(例如科研中的实验图片),那么它们的直方图应该有一定的相似性。
    • 曝光度调整通常会导致直方图的整体平移或缩放,而不是完全改变分布形状。
  2. 改进方法

    • 直方图平移检测:检查直方图是否整体平移(例如曝光度增加或减少)。
    • 直方图形状相似性:使用更高级的直方图比较方法(如巴氏距离或卡方距离)来评估形状相似性。
    • 局部特征对比:如果可能,提取图片的局部特征(如边缘、纹理)进行比较,确保图片内容一致。

改进代码:

以下代码结合了直方图平移检测和形状相似性分析:

python 复制代码
import cv2
import numpy as np
import matplotlib.pyplot as plt

# 加载原始图片和处理后的图片
original_image = cv2.imread('original_image.jpg', cv2.IMREAD_GRAYSCALE)
processed_image = cv2.imread('processed_image.jpg', cv2.IMREAD_GRAYSCALE)

# 计算直方图
original_hist = cv2.calcHist([original_image], [0], None, [256], [0, 256])
processed_hist = cv2.calcHist([processed_image], [0], None, [256], [0, 256])

# 归一化直方图
original_hist = original_hist / original_image.size
processed_hist = processed_hist / processed_image.size

# 绘制直方图
plt.figure(figsize=(10, 5))

plt.subplot(1, 2, 1)
plt.plot(original_hist, color='black')
plt.title('原始图片直方图')
plt.xlabel('像素值')
plt.ylabel('频率')

plt.subplot(1, 2, 2)
plt.plot(processed_hist, color='black')
plt.title('处理后图片直方图')
plt.xlabel('像素值')
plt.ylabel('频率')

plt.show()

# 比较直方图形状相似性(使用巴氏距离)
def compare_histograms(hist1, hist2):
    # 巴氏距离(值越小,直方图越相似)
    return cv2.compareHist(hist1, hist2, cv2.HISTCMP_BHATTACHARYYA)

# 检测直方图是否平移(曝光度调整)
def detect_exposure_shift(hist1, hist2):
    # 计算直方图的均值
    mean1 = np.sum(np.arange(256) * hist1.flatten())
    mean2 = np.sum(np.arange(256) * hist2.flatten())
    shift = mean2 - mean1
    return shift

# 计算直方图形状相似性
bhattacharyya_distance = compare_histograms(original_hist, processed_hist)
print(f"直方图巴氏距离: {bhattacharyya_distance}")

# 检测直方图平移
exposure_shift = detect_exposure_shift(original_hist, processed_hist)
print(f"直方图平移量: {exposure_shift}")

# 判断是否存在曝光度调整
if bhattacharyya_distance < 0.2 and abs(exposure_shift) > 10:  # 阈值可以根据实际情况调整
    print("处理后的图片可能经过曝光度调整。")
else:
    print("处理后的图片不太可能经过曝光度调整。")

代码改进点:

  1. 巴氏距离

    • 用于衡量直方图形状的相似性。值越小,说明直方图形状越相似。
    • 如果两张图片的内容相同,但曝光度不同,巴氏距离应该较小。
  2. 直方图平移检测

    • 计算直方图的均值差异,判断是否存在整体平移。
    • 如果平移量较大(例如大于10),则可能存在曝光度调整。
  3. 综合判断

    • 如果直方图形状相似(巴氏距离小)且存在明显平移(平移量大),则可以认为存在曝光度调整。

示例输出:

  • 直方图巴氏距离: 0.15
  • 直方图平移量: 25
  • 结论: 处理后的图片可能经过曝光度调整。

注意事项:

  1. 阈值调整

    • 巴氏距离和平移量的阈值需要根据具体场景调整。
    • 例如,巴氏距离的阈值可以设为0.2,平移量的阈值可以设为10。
  2. 图片内容一致性

    • 该方法假设两张图片的内容基本相同。如果内容完全不同,直方图比较将失效。
  3. 其他图像处理操作

    • 如果图片经过其他处理(如对比度调整、滤波等),可能需要更复杂的分析方法。

通过这种方法,可以更准确地检测图片是否经过曝光度调整,同时避免误判。

相关推荐
chengxuyuan666662 分钟前
python基础语句整理
java·windows·python
AI2AGI11 分钟前
天天AI-20250121:全面解读 AI 实践课程:动手学大模型(含PDF课件)
大数据·人工智能·百度·ai·文心一言
清弦墨客27 分钟前
【蓝桥杯】43691.拉马车
python·蓝桥杯·程序算法
滴滴哒哒答答34 分钟前
《自动驾驶与机器人中的SLAM技术》ch4:基于预积分和图优化的 GINS
人工智能·机器人·自动驾驶
流烟默1 小时前
NLP自然语言处理中Word2Vec和GloVe概述
人工智能·自然语言处理
羊小猪~~1 小时前
深度学习基础--LSTM学习笔记(李沐《动手学习深度学习》)
人工智能·rnn·深度学习·学习·机器学习·gru·lstm
青松@FasterAI1 小时前
Word2Vec如何优化从中间层到输出层的计算?
人工智能·深度学习·自然语言处理·nlp面题
CES_Asia1 小时前
CES Asia 2025优惠期即将截止,独特模式助力科技盛会
人工智能·科技·数码相机·智能手表