【无标题】Image-to-Image Translation 图像风格迁移中的成对图像拼接代码

引 言 在图像风格迁移任务中,近几年比较火热的Generative Adversarial Nets (GAN)模型以及各种变体深受视觉研究团体的青睐,在具体任务中取得比较不错的实验表现。在有监督图像风格迁移任务迁移中,需要输入给模型成对的图片(一个来自源域source domain,一个来自目标域target domain)。成对图像底层内容可以相同,pix2pix模型主要研究这类图像集合,图像底层内容也可以不同,CycleGAN模型主要解决底层内容不同的风格迁移问题。在图像输入模型前需要对图像进行预处理,可以将两个领域的图像拼接成一张图作为模型的输入。本文主要讲述两个用于图像拼接处理的代码。代码来源于文章【Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks】[paper] [Project code]

文章目录

一、PIL库实现图像拼接

图像拼接的前提条件是两张图具有相同的尺寸,若尺寸不同需要采用缩放、裁剪等策略对图像进行预处理。调用Image.new(mode, size)创建拼接图,通过 paste()函数将两张图片粘贴到指定位置。

示例代码:

c 复制代码
def align_images(a_file_paths, b_file_paths, target_path):
    if not os.path.exists(target_path):
        os.makedirs(target_path,exist_ok=True)

    for i in range(len(a_file_paths)):
        img_a = Image.open(a_file_paths[i])
        img_b = Image.open(b_file_paths[i])
        assert(img_a.size == img_b.size)

        aligned_image = Image.new("RGB", (img_a.size[0] * 2, img_a.size[1]))
        aligned_image.paste(img_a, (0, 0))
        aligned_image.paste(img_b, (img_a.size[0], 0))
        aligned_image.save(os.path.join(target_path, '{:04d}.jpg'.format(i)))

if __name__ == '__main__':
    img_A_path = './2007_000121.jpg'
    img_B_path = './2007_000123.jpg'
    img_AB_dir = './AB/splice'
    align_images([img_A_path], [img_B_path], img_AB_dir)

图片效果

二、cv2库实现图像拼接

首先调用cv2.imread()函数读取两张图片,将两张图片拼接后调用cv2.imwrite()函数写入到新图片文件中。

示例代码

c 复制代码
def image_write(path_A, path_B, path_AB):
    if not os.path.exists(path_AB):
        os.makedirs(path_AB,exist_ok=True)
    im_A = cv2.imread(path_A, 1) # python2: cv2.CV_LOAD_IMAGE_COLOR; python3: cv2.IMREAD_COLOR
    im_B = cv2.imread(path_B, 1) # python2: cv2.CV_LOAD_IMAGE_COLOR; python3: cv2.IMREAD_COLOR
    im_AB = np.concatenate([im_A, im_B], 1)
    img_save = os.path.join(path_AB,'concate.jpg')
    cv2.imwrite(img_save, im_AB)

if __name__ == '__main__':
    img_A_path = './2007_000121.jpg'
    img_B_path = './2007_000123.jpg'
    img_AB_dir = './AB/splice'
    image_write(img_A_path,img_B_path,img_AB_dir)

三、总结

在视觉项目中,图像数据集的预处理是一个非常重要的关键环节,在CycleGAN的项目代码中除本文 描述的一个小细节外,还有很多图像数据预处理代码值得大家学习和引用。在引言部分给出了项目代码的 hub库。想要阅读项目代码的同学可以自行下载学习。

相关推荐
胖墩会武术11 分钟前
【OpenCV图像处理】图像去噪:cv.fastNlMeansDenoising()
图像处理·opencv·计算机视觉
糯米导航13 分钟前
解锁 AI 开发技能:环境搭建、工具详解与第一个 AI 程序实战
人工智能
pen-ai24 分钟前
【高级机器学习】6. 稀疏编码与正则化
人工智能·机器学习
骑蜗牛散步24 分钟前
安装 NVIDIA Container Runtime(含离线安装)
人工智能
美团技术团队29 分钟前
美团开源LongCat-Audio-Codec,高效语音编解码器助力实时交互落地
人工智能
程思扬31 分钟前
开源 + 实时 + 无网络限制:Excalidraw 是流程图协作新选择
网络·人工智能·阿里云·ai·开源·流程图
聚合菌33 分钟前
【数据启元计划】推荐有礼:最高领100元话费或热门视频会员年卡!
人工智能
松岛雾奈.2301 小时前
机器学习--KNN算法中的距离、范数、正则化
人工智能·算法·机器学习
程途拾光1581 小时前
用流程图优化工作流:快速识别冗余环节,提升效率
大数据·论文阅读·人工智能·流程图·论文笔记
Lab4AI大模型实验室1 小时前
【Github热门项目】DeepSeek-OCR项目上线即突破7k+星!突破10倍无损压缩,重新定义文本-视觉信息处理
人工智能·github·deepseek-ocr