From 9d8e5ddbec3b5c7cc2e77c99172e11d8bed1c88c Mon Sep 17 00:00:00 2001 From: Benjamin Loison <12752145+Benjamin-Loison@users.noreply.github.com> Date: Sat, 27 Apr 2024 19:24:12 +0200 Subject: [PATCH] Make `split_and_compare_prnus_of_subgroups.py` only use 2 images of RAM quantity --- .../split_and_compare_prnus_of_subgroups.py | 37 +++++++++---------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/datasets/raise/split_and_compare_prnus_of_subgroups.py b/datasets/raise/split_and_compare_prnus_of_subgroups.py index 91c5527..68ef827 100755 --- a/datasets/raise/split_and_compare_prnus_of_subgroups.py +++ b/datasets/raise/split_and_compare_prnus_of_subgroups.py @@ -21,35 +21,32 @@ IMAGES_FOLDER = 'flat-field/TIF' imagesFileNames = os.listdir(IMAGES_FOLDER) # To not have a bias (chronological for instance) when split to make subgroups. shuffle(imagesFileNames) -numberOfImagesPerSubgroup = len(imagesFileNames) // NUMBER_OF_SUBGROUPS -numberOfImagesThresholds = range(numberOfImagesPerSubgroup, numberOfImagesPerSubgroup + 1) -subgroupsPrnuEstimatesNpArray = [] -for subgroupIndex in tqdm(range(NUMBER_OF_SUBGROUPS), 'Subgroup'): - subgroupPrnuEstimateNpArray = [] - subgroupIterativeMean = iterativeMean() - subgroupImagesFileNames = imagesFileNames[numberOfImagesPerSubgroup * subgroupIndex : numberOfImagesPerSubgroup * (subgroupIndex + 1)] - for imageFileName in tqdm(subgroupImagesFileNames, f'Image of subgroup {subgroupIndex}'): - imagePath = f'{IMAGES_FOLDER}/{imageFileName}' - imagePil = Image.open(imagePath) +numberOfImagesPerSubgroup = len(imagesFileNames) // NUMBER_OF_SUBGROUPS + +subgroupsIterativeMean = [iterativeMean() for _ in range(NUMBER_OF_SUBGROUPS)] +rmss = [] +for subgroupImageIndex in tqdm(range(numberOfImagesPerSubgroup), 'Subgroup image index'): + for subgroupIndex in tqdm(range(NUMBER_OF_SUBGROUPS), 'Subgroup'): + imageIndex = (subgroupIndex * NUMBER_OF_SUBGROUPS) + subgroupImageIndex + imageFileName = imagesFileNames[imageIndex] + imageFilePath = f'{IMAGES_FOLDER}/{imageFileName}' + imagePil = Image.open(imageFilePath) imageNpArray = img_as_float(np.array(imagePil)) imagePrnuEstimateNpArray = imageNpArray - denoise(imageNpArray, DENOISER) + subgroupIterativeMean = subgroupsIterativeMean[subgroupIndex] subgroupIterativeMean.add(imagePrnuEstimateNpArray) - subgroupPrnuEstimateNpArray += [subgroupIterativeMean.mean] + if subgroupIndex == NUMBER_OF_SUBGROUPS - 1: + assert NUMBER_OF_SUBGROUPS == 2 + rms = rmsDiffNumpy(subgroupIterativeMean.mean, subgroupsIterativeMean[1 - subgroupIndex].mean) + rmss += [rms] - subgroupsPrnuEstimatesNpArray += [subgroupPrnuEstimateNpArray] - -mostImagesSubgroupPrnuEstimatesNpArray = [subgroupPrnuEstimatesNpArray[-1] for subgroupPrnuEstimatesNpArray in subgroupsPrnuEstimateNpArray] +mostImagesSubgroupPrnuEstimatesNpArray = [subgroupIterativeMean.mean for subgroupIterativeMean in subgroupsIterativeMean] minimum = np.min(mostImagesSubgroupPrnuEstimatesNpArray) maximum = np.max(mostImagesSubgroupPrnuEstimatesNpArray) for subgroupIndex in range(NUMBER_OF_SUBGROUPS): - plt.imsave(f'prnu_subgroup_{subgroupIndex}.png', (subgroupsPrnuEstimateNpArray[subgroupIndex][-1] - minimum) / (maximum - minimum)) - -rmss = [] -for numberOfImagesIndex in range(len(numberOfImagesThresholds)): - rms = rmsDiffNumpy(subgroupsPrnuEstimatesNpArray[0][numberOfImagesIndex], subgroupsPrnuEstimatesNpArray[1][numberOfImagesIndex]) - rmss += [rms] + plt.imsave(f'prnu_subgroup_{subgroupIndex}.png', (subgroupsIterativeMean[subgroupIndex].mean - minimum) / (maximum - minimum)) plt.title(f'RMS between both subgroups estimated PRNUs with {DENOISER} denoiser for a given number of images among them') plt.xlabel('Number of images of each subgroup')