Skip to content
Snippets Groups Projects
Commit aa398257 authored by Matthieu Muller's avatar Matthieu Muller
Browse files

Merge branch 'master' into 'master'

Final deposit

See merge request !36
parents c7328d8a de2f231a
No related branches found
No related tags found
1 merge request!36Final deposit
File added
"""The main file for the reconstruction.
This file should NOT be modified except the body of the 'run_reconstruction' function.
Students can call their functions (declared in others files of src/methods/your_name).
"""
import numpy as np
from src.forward_model import CFA
from scipy.signal import medfilt2d
def freeman_median_demosaicking(op: CFA, y: np.ndarray) -> np.ndarray:
"""Performs the Freeman's method with median for demosaicking.
Args:
op (CFA): CFA operator.
y (np.ndarray): Mosaicked image.
Returns:
np.ndarray: Demosaicked image.
"""
z = op.adjoint(y)
res = np.empty(op.input_shape)
mask_r = np.zeros_like(z[:, :, 0], dtype = float)
mask_g = np.zeros_like(z[:, :, 1], dtype = float)
mask_b = np.zeros_like(z[:, :, 2], dtype = float)
D_rg = z[:, :, 0] - z[:, :, 1]
M1 = medfilt2d(D_rg, kernel_size=5)
D_gb = z[:, :, 1] - z[:, :, 2]
M2 = medfilt2d(D_gb, kernel_size=5)
D_rb = z[:, :, 0] - z[:, :, 2]
M3 = medfilt2d(D_rb, kernel_size=5)
res[:, :, 0] = z[:, :, 0] + (M1 * mask_g + z[:, :, 1]) + (M3 * mask_b + z[:, :, 2])
res[:, :, 1] = z[:, :, 1] + (z[:, :, 0] - M1 * mask_r) + (M2 * mask_b + z[:, :, 2])
res[:, :, 2] = z[:, :, 2] + (z[:, :, 1] - M2 * mask_g) + (z[:, :, 0] - M3 * mask_r)
return res
def run_reconstruction(y: np.ndarray, cfa: str) -> np.ndarray:
"""Performs demosaicking on y.
Args:
y (np.ndarray): Mosaicked image to be reconstructed.
cfa (str): Name of the CFA. Can be bayer or quad_bayer.
Returns:
np.ndarray: Demosaicked image.
"""
input_shape = (y.shape[0], y.shape[1], 3)
op = CFA(cfa, input_shape)
res = freeman_median_demosaicking(op, y)
return res
####
####
####
#### #### #### #############
#### ###### #### ##################
#### ######## #### ####################
#### ########## #### #### ########
#### ############ #### #### ####
#### #### ######## #### #### ####
#### #### ######## #### #### ####
#### #### ######## #### #### ####
#### #### ## ###### #### #### ######
#### #### #### ## #### #### ############
#### #### ###### #### #### ##########
#### #### ########## #### #### ########
#### #### ######## #### ####
#### #### ############ ####
#### #### ########## ####
#### #### ######## ####
#### #### ###### ####
# 2023
# Authors: Mauro Dalla Mura and Matthieu Muller
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment