def compareWatermark(wOriginal, wExtracted, imgMode): wOriginal = im.loadImage(wOriginal) if imgMode == "GRAYSCALE": wOriginal = im.grayscale(wOriginal) else: wOriginal = im.binarization(wOriginal) wExtracted = im.loadImage(wExtracted) #print(im.imgSize(wOriginal), im.imgSize(wExtracted)) if (im.imgSize(wOriginal) != im.imgSize(wExtracted)): wExtracted = fixSizeImg(wOriginal, wExtracted, imgMode) wOriginal = ImageToFlattedArray(wOriginal) wExtracted = ImageToFlattedArray(wExtracted) #print(len(wOriginal), len(wExtracted)) p = m.correlationIndex(wOriginal, wExtracted) psnr = m.PSNR(wOriginal, wExtracted) return m.binaryDetection(p, 0.7), psnr
def createImgArrayToEmbed(image): width, heigth = imgSize(image) flattedImage = [width, heigth] tmp = np.ravel(image) for i in range(len(tmp)): flattedImage.append(tmp[i]) return flattedImage
def deltaDCT(coeffs, image): image = isImgBinary(image) width, heigth = imgSize(image) joinCoeffs = coeffs.copy() coeffsLen = len(coeffs) #Embedding watermark for i in range(width): for j in range(heigth): value = image.getpixel(xy=(i,j)) x = i*heigth + j v1, v2 = subVectors(joinCoeffs[x]) norm1, u1 = normCalc(v1) norm2, u2 = normCalc(v2) norm = (norm1 + norm2) / 2 norm1, norm2 = setDelta(norm, 10, value) v1 = inormCalc(norm1, u1) v2 = inormCalc(norm2, u2) joinCoeffs[x] = isubVectors(v1, v2) return joinCoeffs
def bruteBinary(coeffs, image): image = isImgBinary(image) joinCoeffs = coeffs.copy() coeffsLen = len(coeffs) frameLen = len(coeffs[0]) width, heigth = imgSize(image) if (width * heigth) + 2 >= coeffsLen: sys.exit("DELTA DCT: Cover dimension is not sufficient for this payload size!") joinCoeffs = sizeEmbedding(joinCoeffs, width, heigth) #Embedding watermark for i in range(width): for j in range(heigth): value = image.getpixel(xy=(i,j)) x = i*heigth + j joinCoeffs[x+2] = setBinary(joinCoeffs[x+2], value) return joinCoeffs
def LSB(audio, image): image = isImgBinary(image) joinAudio, numOfFrames = isJoinedAudio(audio) width, heigth = imgSize(image) audioLen = len(joinAudio) if (width * heigth) + 32 >= audioLen: sys.exit("LEAST SIGNIFICANT BIT: Cover dimension is not sufficient for this payload size!") joinAudio = sizeEmbedding(joinAudio, width, heigth) #Embedding watermark for i in range(width): for j in range(heigth): value = image.getpixel(xy=(i,j)) value = 1 if value == 255 else 0 x = i*heigth + j joinAudio[x + 32] = setLastBit(joinAudio[x + 32],value) if numOfFrames is not -1: return audioToFrame(joinAudio, numOfFrames) else: return joinAudio