Files
Robust_image_source_identif…/datasets/raise/analyze_bayer_filter_mean_denoiser.py

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()