36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
import numpy as np
|
|
from utils import Color
|
|
import os
|
|
from tqdm import tqdm
|
|
import rawpy
|
|
import matplotlib.pyplot as plt
|
|
|
|
os.chdir('flat-field/NEF')
|
|
|
|
firstBayerFilterOccurrenceImages = []
|
|
|
|
for fileName in tqdm(os.listdir()):
|
|
with rawpy.imread(fileName) as raw:
|
|
colorDesc = raw.color_desc.decode('ascii')
|
|
assert colorDesc == 'RGBG'
|
|
assert np.array_equal(raw.raw_pattern, np.array([[0, 1], [3, 2]], dtype = np.uint8))
|
|
# RG
|
|
# GB
|
|
firstBayerFilterOccurrenceImage = raw.raw_image_visible.copy()[:2, :2]
|
|
firstBayerFilterOccurrenceImages += [firstBayerFilterOccurrenceImage]
|
|
|
|
firstBayerFilterOccurrenceImages = np.array(firstBayerFilterOccurrenceImages)
|
|
print(rawImageVisible)
|
|
|
|
NUMBER_OF_COLORS = 3
|
|
HEX_COLOR = '#' + '%02x' * NUMBER_OF_COLORS
|
|
COLOR_BASE = 256
|
|
|
|
def getColor(colorIndex):
|
|
return HEX_COLOR % tuple((255 if colorIndex == colorIndexTmp else 0) for colorIndexTmp in range(NUMBER_OF_COLORS))
|
|
|
|
for colorIndex, (colorY, colorX) in enumerate([(0, 0), (0, 1), (1, 1)]):
|
|
X = firstBayerFilterOccurrenceImages[:, colorY, colorX] - np.mean(firstBayerFilterOccurrenceImages, axis = 0)[colorY, colorX]
|
|
plt.hist(X, bins = len(set(X)), color = getColor(colorIndex), alpha = 0.3)
|
|
plt.show()
|