public override Bitmap RecoverWatermark(Bitmap watermarkedImage) { var coverData = ImageUtility.ConvertToMatrix(_coverImage); var watermarkData = ImageUtility.ConvertToMatrix(_watermark); var watermarkedData = ImageUtility.ConvertToMatrix(watermarkedImage); Action red = () => RecoverChannel(coverData.R, watermarkedData.R, watermarkData.R); Action green = () => RecoverChannel(coverData.G, watermarkedData.G, watermarkData.G); Action blue = () => RecoverChannel(coverData.B, watermarkedData.B, watermarkData.B); Parallel.Invoke(red, green, blue); var avgGray = new double[watermarkData.Width, watermarkData.Height]; for (int i = 0; i < watermarkData.Width; i++) { for (int j = 0; j < watermarkData.Height; j++) { avgGray[i, j] = (1 * watermarkData.R[i, j] + 1 * watermarkData.G[i, j] + 1 * watermarkData.B[i, j]) / 3; } } watermarkData = new RgbData(avgGray); var recoveredWatermark = ImageUtility.ConvertToBitmap(watermarkData); return(recoveredWatermark); }
public override Bitmap EmbedWatermark(Bitmap coverImage, Bitmap watermarkImage) { var coverData = ImageUtility.ConvertToMatrix(coverImage); var watermarkData = ImageUtility.ConvertToMatrix(watermarkImage); Action red = () => EmbedChannel(coverData.R, watermarkData.R); Action green = () => EmbedChannel(coverData.G, watermarkData.G); Action blue = () => EmbedChannel(coverData.B, watermarkData.B); Parallel.Invoke(red, green, blue); var watermarkedImage = ImageUtility.ConvertToBitmap(coverData); SetInformData(coverImage, watermarkImage); return(watermarkedImage); }
public override Bitmap EmbedWatermark(Bitmap coverImage, Bitmap watermark) { var coverData = ImageUtility.ConvertToMatrix(coverImage); var watermarkData = ImageUtility.ConvertWatermarkToBinaryArray2(watermark); var watermarkChannel = new int[watermarkData.Length]; int k = 0; for (int i = 0; i < watermarkData.GetUpperBound(0) + 1; i++) { for (int j = 0; j < watermarkData.GetUpperBound(1) + 1; j++) { watermarkChannel[k++] = watermarkData[i, j]; } } EmbedChannel(coverData.G, watermarkChannel); SetInformData(watermark); var watermarkedImage = ImageUtility.ConvertToBitmap(coverData); return(watermarkedImage); }