簡體   English   中英

將灰度圖像歸一化為一個值

[英]Normalize grayscale image to a value

有沒有辦法對灰度圖像進行歸一化,使其具有預定義的平均值。 假設我們得到一個平均值為 142(最大值 = 250 和最小值 = 10)的圖像,我們將對其進行標准化,使其平均值為 100。整個圖像會變暗,最小值和最大值也會改變。 實現這一點的最佳方法是什么?

您可以讀取灰度圖像並將最小最大值直接應用於圖像,就像 MinMaxScaler sklearn 的操作一樣

im = cv2.imread(file,0)
((im/255)*90)+10

出去:

array([[100., 100., 100., ..., 100., 100., 100.],
       [100., 100., 100., ..., 100., 100., 100.],
       [100., 100., 100., ..., 100., 100., 100.],
       ...,

或者

使用Sklearn.MinMaxScaler對圖像進行變換

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler(feature_range=(10,100))
scaler.fit(im)
scaler.transform(im)

您可以使用直接乘法來實現:

import numpy as np

# Make 64 noise samples with mean=142, sigma=50
s = np.random.normal(142, 50, 64) 

看起來像這樣:

array([108.96793075, 122.56604336,  52.92948494, 211.88597561,
       201.75694121, 127.03699257, 169.63376672, 151.38689085,
        88.50751644, 180.42261676, 148.06044352, 113.02992937,
       128.68514242, 171.55551377, 182.72483817, 127.008611  ,
       192.63588333, 154.29289467,  95.42692049, 168.35000286,
       101.22705089, 111.03725683, 110.5901968 , 185.42039232,
       144.03267223, 178.25385364, 157.65533049, 142.71266293,
       123.6252744 , 136.0834919 , 157.04318249, 164.20554021,
       181.80931254, 125.869104  ,  65.63487663, 158.02223726,
        91.04841987,  41.05017344, 175.60718802, 273.45938051,
        82.37393654, 188.86067814, 154.37552451, 173.63709343,
       106.49434825, 110.5845771 ,  87.71306659, 150.19152982,
       238.95739708, 152.91382848, 210.96731605, 154.80451484,
       156.14301742, 157.31710985, 170.80328144, 122.48376855,
       187.7631208 , 148.40453789,  80.31133945,  97.093196  ,
       149.19437508, 140.4912321 , 278.1623903 , 131.15185917])

In [53]: s.min(), s.max(), s.mean()                                                           
Out[53]: (41.050173444195025, 278.1623902968886, 146.1319527357261)

現在將平均值移至 100:

r = s * 100./s.mean()

現在它看起來像這樣:

array([ 74.56817534,  83.87354105,  36.22033645, 144.99633492,
       138.06490465,  86.93306987, 116.08259764, 103.59602264,
        60.56684714, 123.46554835, 101.31969138,  77.34785395,
        88.06092029, 117.39767419, 125.04098847,  86.91364799,
       131.82324586, 105.58463894,  65.30188552, 115.2041013 ,
        69.27099036,  75.98424215,  75.67831315, 126.88559131,
        98.56343498, 121.98143548, 107.8855976 ,  97.66013542,
        84.59838665,  93.12370728, 107.46669674, 112.36799149,
       124.41448235,  86.13386849,  44.91480159, 108.13667668,
        62.30562048,  28.09116875, 120.17028769, 187.13181846,
        56.36955847, 129.23982374, 105.64118362, 118.82212629,
        72.8754706 ,  75.67446752,  60.02319476, 102.77802152,
       163.52166149, 104.64092597, 144.3676842 , 105.93474729,
       106.85070205, 107.65414881, 116.88291181,  83.81723932,
       128.48875095, 101.55515964,  54.9580964 ,  66.44213958,
       102.09565552,  96.13998135, 190.35014936,  89.74892672])

In [59]: r.min(), r.max(), r.mean()                                                           
Out[59]: (28.091168752416973, 190.3501493611971, 100.0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM