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

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

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

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

相关推荐
我很哇塞耶1 分钟前
OpenAI最新发布,企业级AI智能体的强化微调实践
人工智能·ai·大模型
MediaTea11 分钟前
大学 Python 编程基础(合集)
开发语言·python
岁月的眸12 分钟前
【科大讯飞声纹识别和语音内容识别的实时接口实现】
人工智能·go·语音识别
Nautiluss15 分钟前
一起玩XVF3800麦克风阵列(十)
linux·人工智能·python·音频·语音识别·实时音视频·dsp开发
BoBoZz1918 分钟前
MultiBlockDataSet 复合感知与非复合感知
python·vtk·图形渲染·图形处理
暴风鱼划水32 分钟前
大型语言模型(入门篇)B
人工智能·语言模型·大模型·llm
鼎道开发者联盟32 分钟前
构建活的界面:AIGUI底板的动态布局
人工智能·ui·ai·aigc·gui
无代码专家40 分钟前
设备巡检数字化闭环解决方案:从预防到优化的全流程赋能
大数据·人工智能
兔子小灰灰1 小时前
jetson安装pytorch
人工智能·pytorch·python