| import numpy as np |
| import math |
|
|
|
|
|
|
|
|
| def psnr(img1, img2): |
| mse = np.mean( (img1 - img2) ** 2 ) |
| if (mse == 0): |
| return (100) |
| PIXEL_MAX = 1.0 |
| return (20 * math.log10(PIXEL_MAX / math.sqrt(mse))) |
|
|
| def split2(dataset,size,h,w): |
| newdataset=[] |
| nsize1=256 |
| nsize2=256 |
| for i in range (size): |
| im=dataset[i] |
| for ii in range(0,h,nsize1): |
| for iii in range(0,w,nsize2): |
| newdataset.append(im[ii:ii+nsize1,iii:iii+nsize2,:]) |
| |
| return np.array(newdataset) |
| def merge_image2(splitted_images, h,w): |
| image=np.zeros(((h,w,1))) |
| nsize1=256 |
| nsize2=256 |
| ind =0 |
| for ii in range(0,h,nsize1): |
| for iii in range(0,w,nsize2): |
| image[ii:ii+nsize1,iii:iii+nsize2,:]=splitted_images[ind] |
| ind=ind+1 |
| return np.array(image) |
|
|
|
|
|
|
| def getPatches(watermarked_image,clean_image,mystride): |
| watermarked_patches=[] |
| clean_patches=[] |
| |
| |
| h = ((watermarked_image.shape [0] // 256) +1)*256 |
| w = ((watermarked_image.shape [1] // 256 ) +1)*256 |
| image_padding=np.ones((h,w)) |
| image_padding[:watermarked_image.shape[0],:watermarked_image.shape[1]]=watermarked_image |
| |
| for j in range (0,h-256,mystride): |
| for k in range (0,w-256,mystride): |
| watermarked_patches.append(image_padding[j:j+256,k:k+256]) |
| |
| |
| h = ((clean_image.shape [0] // 256) +1)*256 |
| w = ((clean_image.shape [1] // 256 ) +1)*256 |
| image_padding=np.ones((h,w))*255 |
| image_padding[:clean_image.shape[0],:clean_image.shape[1]]=clean_image |
|
|
| for j in range (0,h-256,mystride): |
| for k in range (0,w-256,mystride): |
| clean_patches.append(image_padding[j:j+256,k:k+256]/255) |
| |
| return np.array(watermarked_patches),np.array(clean_patches) |