48 lines
1.9 KiB
Python
Executable File
48 lines
1.9 KiB
Python
Executable File
#!/usr/bin/python3
|
|
|
|
import os
|
|
from utils import getColorChannel, Color, mergeSingleColorChannelImagesAccordingToBayerFilter, isARawImage
|
|
from tqdm import tqdm
|
|
import numpy as np
|
|
|
|
folder = 'flat-field/NEF'
|
|
|
|
# Section I. of *Determining Image Origin and Integrity Using Sensor Noise*.
|
|
def dotProduct(X, Y):
|
|
return np.multiply(X, Y).sum()
|
|
|
|
# Section I. of *Determining Image Origin and Integrity Using Sensor Noise*.
|
|
def corr(X, Y):
|
|
XMinusItsMean = X - X.mean()
|
|
YMinusItsMean = Y - Y.mean()
|
|
return dotProduct(XMinusItsMean, YMinusItsMean) / (np.linalg.norm(XMinusItsMean) * np.linalg.norm(YMinusItsMean))
|
|
|
|
def crop(image, yRange, xRange):
|
|
interestingPosition = np.array(image.shape) // 2
|
|
return image[interestingPosition[0] - yRange: interestingPosition[0] + yRange, interestingPosition[1] - xRange: interestingPosition[1] + xRange]
|
|
|
|
lastMergedSingleColorChannelImage = None
|
|
lastCorrelation = None
|
|
|
|
# Supports both highest and lowest.
|
|
extremeCorrelation = None
|
|
extremeCorrelationFile = None
|
|
|
|
files = [file for file in sorted(os.listdir(folder)) if isARawImage(file)]
|
|
|
|
for file in tqdm(files, 'File'):
|
|
colorChannels = {}
|
|
for color in Color:
|
|
colorChannel = getColorChannel(f'{folder}/{file}', color)
|
|
colorChannel = crop(colorChannel, 200, 200)
|
|
colorChannels[color] = colorChannel
|
|
mergedSingleColorChannelImage = mergeSingleColorChannelImagesAccordingToBayerFilter(colorChannels)
|
|
if lastMergedSingleColorChannelImage is not None:
|
|
correlation = corr(mergedSingleColorChannelImage, lastMergedSingleColorChannelImage)
|
|
if extremeCorrelation is None or correlation < extremeCorrelation:
|
|
extremeCorrelation = correlation
|
|
extremeCorrelationFile = file
|
|
|
|
lastMergedSingleColorChannelImage = mergedSingleColorChannelImage
|
|
|
|
print(f'{extremeCorrelationFile} (and previous file) have the lowest correlation with a correlation of {extremeCorrelation}') |