Ejemplo n.º 1
0
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