当代人工智能 实验二 图像处理基础

        原图像设为f(x,y),退化图像设为g(x,y),由于相机等一些因素造成了图像退化,退化过程借助点扩张函数h(x,y)可以表示为下式,求如图所示不同h(x,y)时输出图像。

损失图像生成(以扩张函数a为例):
 

#degradation.py
import cv2
import numpy as np

def apply_degradation(image_path, degradation_kernel_path, output_path):
    # 读取原图像
    f = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
# 读取点扩张函数
h = cv2.imread(degradation_kernel_path, cv2.IMREAD_GRAYSCALE)
    h = h / np.sum(h)  # 归一化h以保持能量不变
    # 使用点扩张函数对原图像进行卷积,模拟退化过程
    g = cv2.filter2D(f, -1, h)
    # 将退化后的图像保存到指定路径
    cv2.imwrite(output_path, g)

# 指定输出图像的路径
output_path = "degraded_image.png"
# 应用退化过程并保存结果
apply_degradation("512x512.png", "a.png", output_path)
print(f"Degraded image saved as {output_path}")

a扩张函数的生成:
 

#a_create.py:
from PIL import Image, ImageDraw

def generate_image(output_path, target_size):
    # 创建黑色底图
    image = Image.new("RGB", target_size, "black")
    # 创建画布
    draw = ImageDraw.Draw(image)
    # 计算点的坐标
    point1 = (target_size[0] * 3 // 7, target_size[1] // 2)
    point2 = (target_size[0] * 4 // 7, target_size[1] // 2)
    # 绘制两个白色点
    draw.point(point1, fill="white")
    draw.point(point2, fill="white")
    # 保存图片
    image.save(output_path)

# 输出图片路径
output_path = "a.png"
# 目标尺寸
target_size = (512, 512)
# 生成图片
generate_image(output_path, target_size)
print("a扩张函数已经生成")

b扩张函数的生成:
 

#b_create.py
from PIL import Image, ImageDraw

def generate_image(output_path, target_size):
    # 创建黑色底图
    image = Image.new("RGB", target_size, "black")
    # 创建画布
    draw = ImageDraw.Draw(image)
    # 计算线的起点和终点
    line_start = (target_size[0] // 2, target_size[1] *3 // 7)
    line_end = (target_size[0] // 2, target_size[1] * 4 // 7)
    # 绘制白色竖线
    draw.line([line_start, line_end], fill="white", width=1)
    # 保存图片
    image.save(output_path)

# 输出图片路径
output_path = "b.png"
# 目标尺寸
target_size = (512, 512)
# 生成图片
generate_image(output_path, target_size)
print("b扩张函数已经生成")

c扩张函数的生成:
 

#c_create.py
from PIL import Image, ImageDraw

def generate_image(output_path, target_size):
    # 创建黑色底图
    image = Image.new("RGB", target_size, "black")
    # 创建画布
    draw = ImageDraw.Draw(image)
    # 计算线的起点和终点
    line_start = (target_size[0] *3 // 7, target_size[1] // 2)
    line_end = (target_size[0] * 4 // 7, target_size[1] // 2)
    # 绘制白色线条
    draw.line([line_start, line_end], fill="white", width=1)
    # 保存图片
    image.save(output_path)

# 输出图片路径
output_path = "c.png"
# 目标尺寸
target_size = (512, 512)
# 生成图片
generate_image(output_path, target_size)
print("c扩张函数已经生成")

d扩张函数的生成:
 

#d_create.py
from PIL import Image, ImageDraw

def generate_image(output_path, target_size):
    # 创建黑色底图
    image = Image.new("RGB", target_size, "black")
    # 创建画布
    draw = ImageDraw.Draw(image)
    # 计算点的坐标
    point_y = target_size[1] // 7
    point1 = (target_size[0] // 2, point_y * 3)
    point2 = (target_size[0] // 2, point_y * 4)
    # 绘制两个白色点
    draw.point(point1, fill="white")
    draw.point(point2, fill="white")
    # 保存图片
    image.save(output_path)

# 输出图片路径
output_path = "d.png"
# 目标尺寸
target_size = (512, 512)
# 生成图片
generate_image(output_path, target_size)
print("d扩张函数已经生成")

 效果如图:

a
b
b
c
d

作者:henu 21级 数据科学与大数据技术 空午

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值