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

  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. 其他图像处理操作

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

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

相关推荐
拾零吖21 小时前
李宏毅 Deep Learning
人工智能·深度学习·机器学习
华芯邦21 小时前
广东充电芯片助力新能源汽车车载系统升级
人工智能·科技·车载系统·汽车·制造
时空无限1 天前
说说transformer 中的掩码矩阵以及为什么能掩盖住词语
人工智能·矩阵·transformer
HAH-HAH1 天前
【Python 入门】(2)Python 语言基础(变量)
开发语言·python·学习·青少年编程·个人开发·变量·python 语法
查里王1 天前
AI 3D 生成工具知识库:当前产品格局与测评总结
人工智能·3d
武子康1 天前
AI-调查研究-76-具身智能 当机器人走进生活:具身智能对就业与社会结构的深远影响
人工智能·程序人生·ai·职场和发展·机器人·生活·具身智能
小鹿清扫日记1 天前
从蛮力清扫到 “会看路”:室外清洁机器人的文明进阶
人工智能·ai·机器人·扫地机器人·具身智能·连合直租·有鹿巡扫机器人
SunnyDays10111 天前
Python 轻松实现替换或修改 PDF 文字
python·替换pdf文字·修改pdf·修改pdf文字
fanstuck1 天前
Prompt提示工程上手指南(六):AI避免“幻觉”(Hallucination)策略下的Prompt
人工智能·语言模型·自然语言处理·nlp·prompt
Just_Paranoid1 天前
【Settings】恢复出厂设置密码校验
android·python·settings·sha256·hmac-sha256