スムーズな色遷移を実現するために、ステッチされた画像間の色差を減らすにはどうすればよいですか?

機械学習でさまざまな画像データの色調と色合いの違いを減らす

キーワード:異なる画像データの色調の違いを排除する/色深度の違いを排除する/病理学/機械学習/深層学習/人工知能

機械学習トレーニング画像データは、画像データ間の色深度と色相により、トレーニングと予測の結果に影響を与える可能性があります。この方法により、トレーニングに対するさまざまな色深度/色相の影響を減らすことができます。

この栗はカラー写真を使用しています

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は標準化された画像(主観的な感覚の色/トーンなど)です。人間の目で観察して得られた)素敵な写真)

複数の画像をつなぎ合わせていますが、画像間の色の変化を改善したいと思います。ここに2つの画像があります:

  • http://imgur.com/nG5I0nr
  • http://imgur.com/EZFzNeL
  • これはステッチされた画像です:
  • http://imgur.com/C23iOqJ
  • 色の変化が非常に悪いことがわかるかもしれません。それらを同じ画像のように(または少なくともそれに近く)見せたいです。

    現在の方法:

    最初にfilter2Dシームの削除を使用し、次にラプラス変換を使用して画像の接続されたポイントのマスクを取得してから、それを修正するためのこのマスク:

    継ぎ目の除去:
    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_
    

    3つ目は、手順2で見つけクラスターの色を使用して画像2のを変換することによって生成されますこのチュートリアルを参照できます

    最後に、2つの画像を1つにマージします。

    2番目の方法があります。つまり、2つの画像のトーンを同じトーンに変更できます。あなたは見ることができます

おすすめ

転載: blog.csdn.net/c2a2o2/article/details/110929297