In order to reduce noise in my training dataset,I attempted a WMF whose weights are shown in a 2-D array as follows(values finally get normalized by division by 15:
[1 , 2 , 1
2 , 3 , 2
1 , 2 , 1]
My input image is an RGB image size (128,128,3)
. The pixel values are integers in the range of 0-255
.
Isolation of each of my three channels is done as:
X_R=X_dummy[:,:,0]
X_G=X_dummy[:,:,1]
X_B=X_dummy[:,:,2]
R_padded=np.pad(X_R,[mask_start,mask_start],'symmetric')
G_padded=np.pad(X_B,[mask_start,mask_start],'symmetric')
B_padded=np.pad(X_G,[mask_start,mask_start],'symmetric')
Where mask_start=2
Convolution for a single channel is shown as:
for x in range(mask_cent,row_pad-mask_start):#The upper limit thing is not included. So Highest value is row_pad-mask_start-1
for y in range(mask_cent,col_pad-mask_start):#These loops seem to be fine
patch_selected_R = R_padded[x - mask_start-1: x + mask_start, y - mask_start-1: y + mask_start]
a1_R= W*patch_selected_R
med=np.median(a1_R)
med=med*15
b[x,y,0]=med
My images, which are shown below look like a colour correction rather than a denoising:
I am unsure of what is going wrong right now.
Edit: Something went wrong, this is my imgur link https://i.sstatic.net/9mw5j.jpg
Edit 2: new code, its resulting output is available through the samethis link
https://i.sstatic.net/j6WgK.jpg :
a1_R=patch_selected_R
for i in range(1,2):
a1_R=np.append(a1_R,patch_selected_R[0,1])
a1_R=np.append(a1_R,patch_selected_R[1,0])
a1_R=np.append(a1_R,patch_selected_R[1,2])
a1_R=np.append(a1_R,patch_selected_R[2,2])
for i in range(1,3):
a1_R=np.append(a1_R,patch_selected_R[1,1])
b[x,y,0]=np.median(a1_R)