如何减少拼接图像之间的颜色差异以实现平滑的颜色过渡?

机器学习中减弱不同图像数据色调及颜色深浅差异

关键词:消除不同图像数据色调差异/消除颜色深浅差异/病理/机器学习/深度学习/人工智能

机器学习训练图像数据时可能会因为图像数据之间的颜色深浅,色调等影响训练和预测结果,本方法可以减弱颜色深浅/色调不同对训练造成的影响

本栗子用到的是彩色图片

1

2

3

4

5

6

7

8

9

10

11

12

13

14

import numpy as np

import cv2

import histomicstk as htk

 

root = 'list.txt'

infer_path = './abc.png'

infer = cv2.imread(infer_path)

for path in open(root):

    path = path.replace('\n', '')

    print('>>>',path)

    input_img = cv2.imread(path)

    meanRef, stdRef = htk.preprocessing.color_conversion.lab_mean_std(infer)

    imNmzd = htk.preprocessing.color_normalization.reinhard(input_img, meanRef, stdRef)

    cv2.imwrite(path, imNmzd)

  其中 histomicstk为某个库,可使用pip install histomicstk安装,root为目标文件遍历的列表(可参考我写的上一篇笔记),infer_path为标准化图像(用人眼观察主观得到的感觉颜色/色调等都不错的图片)

我正在拼接多张图像,但我想改善它们之间的色彩过渡。这是两个图像:

  • http://imgur.com/nG5I0nr
  • http://imgur.com/EZFzNeL
  • 这是缝合的图像:
  • http://imgur.com/C23iOqJ
  • 您可能会看到,颜色过渡非常差。我想让它们看起来像是相同的图像(或至少接近它)

    我目前的操作方式:

    我首先使用filter2D删除接缝,然后使用Laplacian变换获取图像连接点的遮罩,然后使用此遮罩进行修复:

    接缝去除:
    kernel = np.ones((5,5),np.float32)/25
    seam_removal = cv2.filter2D(data_map,-1,kernel)
    

    这是我获得的图像连接点的蒙版,并使用此蒙版在一些膨胀后进行修补:
  • http://imgur.com/L3tmlGy
  • 但是,正如您在最终图像中看到的那样,这根本无法改善混合效果。

     

     

    最佳答案

    我不知道这是一个好主意,但我认为您可以使用Kmeans来“调整”图像的颜色。

    首先,您将图像转换为 RGB

    image= cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    

    第二,使用 Kmeans 算法训练第一张图像并找出“簇颜色”
    clt = KMeans(n_clusters = 20)
    clt.fit(img1)
    colors = clt.cluster_centers_
    

    通过使用在步骤2中找到的群集颜色来转换图像2中的颜色,来生成第三个。您可以参考此tutorial

    最后,只需将两个图像合并为一个即可。

    我有第二种方法,那就是您可以将两个图像的色调更改为相同的色调。您可以看看
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值