Может ли стенография, основанная на обнаружении канни, действительно дать хороший PSNR по сравнению с LSB? - PullRequest
0 голосов
/ 28 декабря 2018

Я тщательно изучил пару статей, в которых люди пытались вставить бит сообщения в слабый край изображения, полученного обнаружением края Канни и сравниваемого с подстановкой LSB.Они утверждают, что имеют высокий PSNR со стеганографией на основе обнаружения канни.

Однако, когда я смотрю на форму PSNR или MSE, то похоже, что PSNR должен быть одинаковым для обоих типов стеганографии, поскольку в конечном итоге мы находим разность для каждого пикселя.

Итак, если мы собираемся скрыть какую-либо информацию в любом пикселе, то на самом деле не имеет значения, где вы скрываете информацию сообщения. (За исключением случая, когда мы скрываем больше бит сообщения в младшем бита, чем слабыйграницы стенографии на основе Канни, но это должно уменьшить количество битов сообщений, которые могут быть скрыты в подходе на основе Канни)

Ниже приведен код, который я написал для клеветы PSNR и MSE.

Isчто-то не так с моим кодом или моей концепцией, опубликованной в MSE.

public static double GetMSEForImages(Bitmap originalImage, Bitmap stegoImage)
        {
            double mseR = 0;
            double mseG = 0;
            double mseB = 0;
            double msE;

            for (int i = 0; i < originalImage.Width; i++)
            {
                for (int j = 0; j < originalImage.Height; j++)
                {
                    mseR += Math.Pow(originalImage.GetPixel(i, j).R - stegoImage.GetPixel(i, j).R, 2);
                    mseG += Math.Pow(originalImage.GetPixel(i, j).G - stegoImage.GetPixel(i, j).G, 2);
                    mseB += Math.Pow(originalImage.GetPixel(i, j).B - stegoImage.GetPixel(i, j).B, 2);

                }
            }
            var averageMSERGB = (mseR + mseG + mseB) / 3;
            msE = averageMSERGB / (originalImage.Width * originalImage.Height);
            return msE;
        }


        public static double GetPSNRForImage(Bitmap orginialImage, Bitmap stegoImage)
        {
            double PSNR = 0;

            double mse = GetMSEForImages(orginialImage, stegoImage);
            PSNR = 10 * Math.Log10(Math.Pow(255, 2) / mse);
            return Math.Truncate(PSNR);
        }
...