图像处理与分析——实验五-小波变换及多分辨率处理

ELecmark VIP

实验目标:

  • 掌握小波变换的基本方法和技术。
  • 使用小波变换实现图像降噪和图像融合。
  • 探索小波变换在图像处理中的实际应用。

一、

实验要求:

  1. imgs目录下有图像laoshan.jpg,用Python写程序,将其作4阶haar小波变换,仅保留第四阶变换的系数,反变换,查看图像的结果。(Matlab代码已经给出,仅作参考)

实验图片路径为:imgs/laoshan.jpg

输出路径为:outputs/

请按照exp5_1_i的格式,输出每个任务结果

实验方案:

  1. 图像读取与预处理

    • 使用 cv2.imread 从指定路径读取图像,并转换为灰度图像。
    • 将图像数据转换为浮点数类型以便进行进一步处理。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import cv2
    import numpy as np
    import pywt

    # 读取图像
    img_path = "imgs/laoshan.jpg"
    img = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE)

    # 转换为浮点数类型
    img_float = np.float32(img)
  2. 4阶Haar小波变换

    • 对图像进行4阶Haar小波变换,使用 pywt.dwt2 计算二维小波变换。
    • 提取第四阶小波变换的系数。
    1
    2
    coeffs = pywt.dwt2(img_float, 'haar')
    LL4, (LH4, HL4, HH4) = coeffs
  3. 保留第四阶变换的系数

    • 仅保留第四阶变换的系数,其余系数置零。
    1
    2
    3
    LL4[:] = 0
    LH4[:] = 0
    HL4[:] = 0
  4. 小波逆变换与图像恢复

    • 对修改后的小波系数进行逆变换,使用 pywt.idwt2 恢复图像。
    • 将结果转换为整型,并保存。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    coeffs = LL4, (LH4, HL4, HH4)
    reconstructed_img = pywt.idwt2(coeffs, 'haar')

    # 转换回整型
    reconstructed_img = np.uint8(reconstructed_img)

    # 保存结果图像
    output_path = "outputs/exp5_1_1.png"
    cv2.imwrite(output_path, reconstructed_img)

实验结果:

1

原图与处理后的对比

  1. 原图特点
    • 原图显示了崂山风景图像,图像中的细节丰富,包含大量的纹理信息。
  2. 处理后的图像
    • 处理后的图像中只保留了第四阶小波变换的系数,图像的细节和纹理信息被显著简化,呈现出较为平滑的效果。

分析

  • 使用Haar小波变换对图像进行多分辨率分析,可以有效地分离图像中的高频和低频信息。
  • 通过仅保留第四阶小波变换的系数,图像的高频细节被抑制,表现为图像的平滑化效果。

二、

实验要求:

  1. imgs目录下有图像1.jpg和2.jpg,用Python写程序,使用基于小波变换的方法将2.jpg中的人物融合到1.jpg中,提升融合效果。

实验图片路径为:imgs/1.jpg imgs/2.jpg

输出路径为:outputs/

请按照exp5_2_i的格式,输出每个任务结果

实验方案:

  1. 图像读取与预处理

    • 使用 cv2.imread 读取两张图像,并转换为灰度图像。
    • 将图像数据转换为浮点数类型以便进行进一步处理。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import cv2
    import numpy as np
    import pywt

    # 读取图像
    img1_path = "imgs/1.jpg"
    img2_path = "imgs/2.jpg"
    img1 = cv2.imread(img1_path, cv2.IMREAD_GRAYSCALE)
    img2 = cv2.imread(img2_path, cv2.IMREAD_GRAYSCALE)
  2. 小波变换

    • 对两张图像进行Haar小波变换,使用 pywt.dwt2 计算二维小波变换。
    • 提取两张图像的小波系数。
    1
    2
    3
    4
    5
    coeffs1 = pywt.dwt2(img1, 'haar')
    LL1, (LH1, HL1, HH1) = coeffs1

    coeffs2 = pywt.dwt2(img2, 'haar')
    LL2, (LH2, HL2, HH2) = coeffs2
  3. 图像融合

    • 将第二张图像的LL系数融合到第一张图像的LL系数中,使用加权平均方法进行融合。
    1
    2
    alpha = 0.5
    merged_LL = alpha * LL1 + (1 - alpha) * LL2
  4. 小波逆变换与图像恢复

    • 对融合后的小波系数进行逆变换,使用 pywt.idwt2 恢复图像。
    • 将结果转换为整型,并保存。
    1
    2
    3
    4
    5
    6
    coeffs_merged = merged_LL, (LH1, HL1, HH1)
    merged_img = pywt.idwt2(coeffs_merged, 'haar')

    # 保存结果图像
    output_path = "outputs/exp5_2_1.png"
    cv2.imwrite(output_path, merged_img)

实验结果:

2

  1. 原图特点

    • 第一张图像是一幅风景图像,背景复杂,包含大量细节和纹理信息。
    • 第二张图像是一幅人物图像,人物占据大部分画面,细节丰富。
  2. 处理后的图像

    • 处理后的图像中融合了第二张图像中的人物,背景的复杂性有所降低,人物与背景的融合效果较好。
    • 通过小波变换,将两张图像在多分辨率层次上进行融合,提升了融合效果。

分析

  • 小波变换提供了多分辨率分析和处理的能力,可以有效地融合不同图像的细节和结构信息。
  • 通过在小波域进行图像融合,可以在保持细节的同时,平滑地过渡不同图像的边界,提高了图像融合的质量。

实验总结:

本次实验主要探索了小波变换及多分辨率处理技术在图像处理中的应用。在第一项任务中,通过对图像进行4阶Haar小波变换并保留第四阶系数,成功地简化了图像的高频细节,展示了小波变换在图像平滑化处理中的效果。在第二项任务中,通过小波变换实现了两张图像的融合,增强了图像的融合效果,展示了小波变换在图像融合处理中的应用价值。

通过本次实验,我进一步理解了小波变换的原理和应用方法,掌握了如何利用小波变换进行图像的多分辨率分析和处理。这些技术在实际的图像处理应用中具有重要的意义,为解决更加复杂的图像处理问题提供了有力的工具和方法。

  • Title: 图像处理与分析——实验五-小波变换及多分辨率处理
  • Author: ELecmark
  • Created at : 2024-05-24 16:54:13
  • Updated at : 2024-05-24 17:03:38
  • Link: https://elecmark.github.io/2024/05/24/图像处理与分析——实验五-小波变换及多分辨率处理/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments