{
  "id": 146950,
  "title": "JMiPOD, JUNIWARD, UERD",
  "url": "/competitions/alaska2-image-steganalysis/discussion/146950",
  "author_name": "",
  "post_date": "2020-04-29T01:22:31.308241700Z",
  "votes": 30,
  "comment_count": 8,
  "views": 0,
  "content": "<p>Is there any relevant info about those algorithms. Unfortunately, i did not find any info:(</p>",
  "messages": [
    {
      "id": "825381",
      "postDate": "04/29/2020 01:22:31",
      "content": "<p>Is there any relevant info about those algorithms. Unfortunately, i did not find any info:(</p>",
      "rawMarkdown": "Is there any relevant info about those algorithms. Unfortunately, i did not find any info:(",
      "votes": null
    },
    {
      "id": "826705",
      "postDate": "04/29/2020 19:49:40",
      "content": "<p>Hello there,</p>\n\n<p>There has been a quite comprehensive topic by <a href=\"/tpmeli\">@tpmeli</a> which provides the source (papers) for those algorithms.\nIn brief, those are modifying by +/- 1 the values of DCT coefficients in order to hides the bits of secret message to be embedded.</p>\n\n<p>The choice of those the DCT coefficients to be modified depend on a \"cost\" map, that is calculated quite heuristically and supposedly represent how much it will cost to use each and every coefs. The main different between those algorithm really is in this cost function.</p>\n\n<p>I am totally open to provide you with more information. \nHowever, I advise not try reproducing those methods and create more data because (1) I am far from certain it will bring an advantage and (2) I believe that the present dataset is large enough and especially comparable to the testing set ... there are many parameters that can affect image noise in which stego hide data </p>",
      "rawMarkdown": "Hello there,\n\nThere has been a quite comprehensive topic by @tpmeli which provides the source (papers) for those algorithms.\nIn brief, those are modifying by +/- 1 the values of DCT coefficients in order to hides the bits of secret message to be embedded.\n\nThe choice of those the DCT coefficients to be modified depend on a \"cost\" map, that is calculated quite heuristically and supposedly represent how much it will cost to use each and every coefs. The main different between those algorithm really is in this cost function.\n\nI am totally open to provide you with more information. \nHowever, I advise not try reproducing those methods and create more data because (1) I am far from certain it will bring an advantage and (2) I believe that the present dataset is large enough and especially comparable to the testing set ... there are many parameters that can affect image noise in which stego hide data",
      "votes": null
    },
    {
      "id": "826753",
      "postDate": "04/29/2020 20:47:03",
      "content": "<p>The main idea was not to generate new samples but to get some additional info how the images were generated, so it would lead to more unique approach than just finding the optimal CNN architecture:)</p>",
      "rawMarkdown": "The main idea was not to generate new samples but to get some additional info how the images were generated, so it would lead to more unique approach than just finding the optimal CNN architecture:)",
      "votes": null
    },
    {
      "id": "826931",
      "postDate": "04/30/2020 00:34:09",
      "content": "<p>So did what I presented was enough or do you want more precision ? \nYou can actually check and the training samples and open directly the JPEG files to see the difference in terms of DCT coefficients using the JPEG toolbox\n<a href=\"https://github.com/klauscc/jpeg_toolbox_python\">https://github.com/klauscc/jpeg_toolbox_python</a> (unfortunately it works like a charm in python2 and like a painful nightmare in Python3 ...)\n<a href=\"https://www.kaggle.com/haytamert/jpeg-compression\">https://www.kaggle.com/haytamert/jpeg-compression</a></p>",
      "rawMarkdown": "So did what I presented was enough or do you want more precision ? \nYou can actually check and the training samples and open directly the JPEG files to see the difference in terms of DCT coefficients using the JPEG toolbox\nhttps://github.com/klauscc/jpeg_toolbox_python (unfortunately it works like a charm in python2 and like a painful nightmare in Python3 ...)\nhttps://www.kaggle.com/haytamert/jpeg-compression",
      "votes": null
    },
    {
      "id": "827041",
      "postDate": "04/30/2020 03:35:38",
      "content": "<p>I have tried to make a notebook to show the impact of steganography on DCT coefficients\n<a href=\"https://www.kaggle.com/remicogranne/inspect-impact-of-steganography-on-dct-coefs\">https://www.kaggle.com/remicogranne/inspect-impact-of-steganography-on-dct-coefs</a></p>\n\n<p>unfortunately, it requires the jpeg toolbox which I was not able to add 😢 \nIf anyone can help on this that would be welcome :c</p>\n\n<p>*<em>Note</em>*I saved the DCT coefficients as \"images\" hence Red corresponds actually to the <em>luminance channel</em>, and Green / Blue are <em>Chrominances channels</em> (of course, the embedding is way more important in luminance as it carries way information ....)</p>\n\n<p>I show a few results below that show how the payload is spread into images taking into account both content and noise.\nInterestingly, there exist two approaches in steganalysis to detect changes in DCT coefficients ... using the DCT coefficients directly (but those as you can see are a nightmare to model) or decompressing the image and using pixels values exepcting it reveals the changes in the DCT (yet we are more use to model pixels ...)</p>\n\n<p>Here's some output look at image 00001:\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Fb3228b543675746e63562c078c4cdacf%2F00001.jpg?generation=1588216182123569&amp;alt=media\" alt=\"\">\nits DCT coefs\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Fcd94fbe9485b131912fc898e3bbf9716%2F00001.jpg?generation=1588216557384694&amp;alt=media\" alt=\"\"></p>\n\n<p>and the modification made by JMiPOD, obviously you would hide into the tree rather than into the blue sky ...\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Fb13eea1ed5f4e72a9a3e991e0cd9db91%2F00001.jpg?generation=1588217422545967&amp;alt=media\" alt=\"\"></p>\n\n<p>As you can see, this adaptativity changes for different embedding .... see for JUNIWARD:\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F415a9b15aaf6c2eb3f149295db31d6b8%2F00001.jpg?generation=1588217502690956&amp;alt=media\" alt=\"\"></p>\n\n<p>and for UERD:\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Ffbbadd956c88c54114c96e4e893c97f2%2F00001.jpg?generation=1588217517374327&amp;alt=media\" alt=\"\"></p>\n\n<p>It is even more obvious for image 00005\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F82d9da0bc3f02aa4c94ff36ef2f1772a%2F00005.jpg?generation=1588216578818404&amp;alt=media\" alt=\"\">\nits DCT coefficients\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F742af6b4aa507703d30dd464509cb25c%2F00005.jpg?generation=1588216591739411&amp;alt=media\" alt=\"\">\nand the changes by the three same methods\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F2bb4b9f371fb01013a420f507150dde7%2F00005.jpg?generation=1588217452580121&amp;alt=media\" alt=\"\">\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Fd7d5bda1baae80deae9435b2ee292a24%2F00005.jpg?generation=1588217576408170&amp;alt=media\" alt=\"\">\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F9716fe232bd7daae0ed0ef453bacc92f%2F00005.jpg?generation=1588217651616709&amp;alt=media\" alt=\"\"></p>\n\n<p>Interestingly, if you look at image 00004 which seem extremely simple :\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F9651b10103d86e9ece6a16b4e5a416de%2F00004.jpg?generation=1588217096214702&amp;alt=media\" alt=\"\">\nIts DCT are as follows:\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Fc7ff21767c84b30f090d2440a340f017%2F00004.jpg?generation=1588217144535281&amp;alt=media\" alt=\"\">\nfrom the pixels it is not obvious that the change will be spread all over the image ... yet from DCT coefs it seems more reasonnable right ?\nThere's the changes :\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F4dedc997ea9c665358ce42e9930d28b4%2F00004.jpg?generation=1588217472671295&amp;alt=media\" alt=\"\">\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F0c4fd3317257a6555880ec87a3a49f48%2F00004.jpg?generation=1588217684211671&amp;alt=media\" alt=\"\">\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Fea756974ecc64c82831ce74a4b9a7754%2F00004.jpg?generation=1588217630901317&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "I have tried to make a notebook to show the impact of steganography on DCT coefficients\n[https://www.kaggle.com/remicogranne/inspect-impact-of-steganography-on-dct-coefs](https://www.kaggle.com/remicogranne/inspect-impact-of-steganography-on-dct-coefs)\n\nunfortunately, it requires the jpeg toolbox which I was not able to add 😢 \nIf anyone can help on this that would be welcome :c\n\n**Note**I saved the DCT coefficients as \"images\" hence Red corresponds actually to the *luminance channel*, and Green / Blue are *Chrominances channels* (of course, the embedding is way more important in luminance as it carries way information ....)\n\nI show a few results below that show how the payload is spread into images taking into account both content and noise.\nInterestingly, there exist two approaches in steganalysis to detect changes in DCT coefficients ... using the DCT coefficients directly (but those as you can see are a nightmare to model) or decompressing the image and using pixels values exepcting it reveals the changes in the DCT (yet we are more use to model pixels ...)\n\n\nHere's some output look at image 00001:\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Fb3228b543675746e63562c078c4cdacf%2F00001.jpg?generation=1588216182123569&amp;alt=media)\nits DCT coefs\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Fcd94fbe9485b131912fc898e3bbf9716%2F00001.jpg?generation=1588216557384694&amp;alt=media)\n\nand the modification made by JMiPOD, obviously you would hide into the tree rather than into the blue sky ...\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Fb13eea1ed5f4e72a9a3e991e0cd9db91%2F00001.jpg?generation=1588217422545967&amp;alt=media)\n\nAs you can see, this adaptativity changes for different embedding .... see for JUNIWARD:\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F415a9b15aaf6c2eb3f149295db31d6b8%2F00001.jpg?generation=1588217502690956&amp;alt=media)\n\nand for UERD:\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Ffbbadd956c88c54114c96e4e893c97f2%2F00001.jpg?generation=1588217517374327&amp;alt=media)\n\n\nIt is even more obvious for image 00005\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F82d9da0bc3f02aa4c94ff36ef2f1772a%2F00005.jpg?generation=1588216578818404&amp;alt=media)\nits DCT coefficients\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F742af6b4aa507703d30dd464509cb25c%2F00005.jpg?generation=1588216591739411&amp;alt=media)\nand the changes by the three same methods\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F2bb4b9f371fb01013a420f507150dde7%2F00005.jpg?generation=1588217452580121&amp;alt=media)\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Fd7d5bda1baae80deae9435b2ee292a24%2F00005.jpg?generation=1588217576408170&amp;alt=media)\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F9716fe232bd7daae0ed0ef453bacc92f%2F00005.jpg?generation=1588217651616709&amp;alt=media)\n\n\nInterestingly, if you look at image 00004 which seem extremely simple :\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F9651b10103d86e9ece6a16b4e5a416de%2F00004.jpg?generation=1588217096214702&amp;alt=media)\nIts DCT are as follows:\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Fc7ff21767c84b30f090d2440a340f017%2F00004.jpg?generation=1588217144535281&amp;alt=media)\nfrom the pixels it is not obvious that the change will be spread all over the image ... yet from DCT coefs it seems more reasonnable right ?\nThere's the changes :\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F4dedc997ea9c665358ce42e9930d28b4%2F00004.jpg?generation=1588217472671295&amp;alt=media)\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F0c4fd3317257a6555880ec87a3a49f48%2F00004.jpg?generation=1588217684211671&amp;alt=media)\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Fea756974ecc64c82831ce74a4b9a7754%2F00004.jpg?generation=1588217630901317&amp;alt=media)",
      "votes": null
    },
    {
      "id": "827722",
      "postDate": "04/30/2020 13:49:44",
      "content": "<p>Thanks!!! It is very useful and certainly enough for now:)</p>",
      "rawMarkdown": "Thanks!!! It is very useful and certainly enough for now:)",
      "votes": null
    },
    {
      "id": "828301",
      "postDate": "04/30/2020 22:10:01",
      "content": "<p>FYI, I've fixed installation of jpegio in your notebook (in a kinda straightforward way), now it works: <a href=\"https://www.kaggle.com/yhn112/inspect-impact-of-steganography-on-dct-coefs\">https://www.kaggle.com/yhn112/inspect-impact-of-steganography-on-dct-coefs</a></p>",
      "rawMarkdown": "FYI, I've fixed installation of jpegio in your notebook (in a kinda straightforward way), now it works: https://www.kaggle.com/yhn112/inspect-impact-of-steganography-on-dct-coefs",
      "votes": null
    },
    {
      "id": "828501",
      "postDate": "05/01/2020 05:14:15",
      "content": "<p><a href=\"/yhn112\">@yhn112</a> thanks a lot. \nI updated it almost at the very same time thank to <a href=\"/yousfi\">@yousfi</a> .\nHe also taught me how to use the !curl command but the ability to use !git really rocks as well ! Thanks a lot</p>",
      "rawMarkdown": "yhn112 thanks a lot. \nI updated it almost at the very same time thank to @yousfi .\nHe also taught me how to use the !curl command but the ability to use !git really rocks as well ! Thanks a lot",
      "votes": null
    },
    {
      "id": "867038",
      "postDate": "05/29/2020 23:48:57",
      "content": "<p>You may browse the following websites to learn of the algorithms (C++ language) in the view of Zeng et al. (2017).\nFree codes available to be downloaded: <a href=\"http://dde.binghamton.edu/download/\">http://dde.binghamton.edu/download/</a>\nPaper: <a href=\"https://arxiv.org/abs/1611.03233v2\">https://arxiv.org/abs/1611.03233v2</a></p>",
      "rawMarkdown": "You may browse the following websites to learn of the algorithms (C++ language) in the view of Zeng et al. (2017).\nFree codes available to be downloaded: http://dde.binghamton.edu/download/\nPaper: https://arxiv.org/abs/1611.03233v2",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 826705,
      "author_name": "remicogranne",
      "author_url": "",
      "post_date": "04/29/2020 19:49:40",
      "content": "<p>Hello there,</p>\n\n<p>There has been a quite comprehensive topic by <a href=\"/tpmeli\">@tpmeli</a> which provides the source (papers) for those algorithms.\nIn brief, those are modifying by +/- 1 the values of DCT coefficients in order to hides the bits of secret message to be embedded.</p>\n\n<p>The choice of those the DCT coefficients to be modified depend on a \"cost\" map, that is calculated quite heuristically and supposedly represent how much it will cost to use each and every coefs. The main different between those algorithm really is in this cost function.</p>\n\n<p>I am totally open to provide you with more information. \nHowever, I advise not try reproducing those methods and create more data because (1) I am far from certain it will bring an advantage and (2) I believe that the present dataset is large enough and especially comparable to the testing set ... there are many parameters that can affect image noise in which stego hide data </p>",
      "votes": null,
      "replies": [
        {
          "id": 826753,
          "author_name": "vovanf98",
          "author_url": "",
          "post_date": "04/29/2020 20:47:03",
          "content": "<p>The main idea was not to generate new samples but to get some additional info how the images were generated, so it would lead to more unique approach than just finding the optimal CNN architecture:)</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 826931,
          "author_name": "remicogranne",
          "author_url": "",
          "post_date": "04/30/2020 00:34:09",
          "content": "<p>So did what I presented was enough or do you want more precision ? \nYou can actually check and the training samples and open directly the JPEG files to see the difference in terms of DCT coefficients using the JPEG toolbox\n<a href=\"https://github.com/klauscc/jpeg_toolbox_python\">https://github.com/klauscc/jpeg_toolbox_python</a> (unfortunately it works like a charm in python2 and like a painful nightmare in Python3 ...)\n<a href=\"https://www.kaggle.com/haytamert/jpeg-compression\">https://www.kaggle.com/haytamert/jpeg-compression</a></p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 827041,
      "author_name": "remicogranne",
      "author_url": "",
      "post_date": "04/30/2020 03:35:38",
      "content": "<p>I have tried to make a notebook to show the impact of steganography on DCT coefficients\n<a href=\"https://www.kaggle.com/remicogranne/inspect-impact-of-steganography-on-dct-coefs\">https://www.kaggle.com/remicogranne/inspect-impact-of-steganography-on-dct-coefs</a></p>\n\n<p>unfortunately, it requires the jpeg toolbox which I was not able to add 😢 \nIf anyone can help on this that would be welcome :c</p>\n\n<p>*<em>Note</em>*I saved the DCT coefficients as \"images\" hence Red corresponds actually to the <em>luminance channel</em>, and Green / Blue are <em>Chrominances channels</em> (of course, the embedding is way more important in luminance as it carries way information ....)</p>\n\n<p>I show a few results below that show how the payload is spread into images taking into account both content and noise.\nInterestingly, there exist two approaches in steganalysis to detect changes in DCT coefficients ... using the DCT coefficients directly (but those as you can see are a nightmare to model) or decompressing the image and using pixels values exepcting it reveals the changes in the DCT (yet we are more use to model pixels ...)</p>\n\n<p>Here's some output look at image 00001:\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Fb3228b543675746e63562c078c4cdacf%2F00001.jpg?generation=1588216182123569&amp;alt=media\" alt=\"\">\nits DCT coefs\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Fcd94fbe9485b131912fc898e3bbf9716%2F00001.jpg?generation=1588216557384694&amp;alt=media\" alt=\"\"></p>\n\n<p>and the modification made by JMiPOD, obviously you would hide into the tree rather than into the blue sky ...\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Fb13eea1ed5f4e72a9a3e991e0cd9db91%2F00001.jpg?generation=1588217422545967&amp;alt=media\" alt=\"\"></p>\n\n<p>As you can see, this adaptativity changes for different embedding .... see for JUNIWARD:\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F415a9b15aaf6c2eb3f149295db31d6b8%2F00001.jpg?generation=1588217502690956&amp;alt=media\" alt=\"\"></p>\n\n<p>and for UERD:\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Ffbbadd956c88c54114c96e4e893c97f2%2F00001.jpg?generation=1588217517374327&amp;alt=media\" alt=\"\"></p>\n\n<p>It is even more obvious for image 00005\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F82d9da0bc3f02aa4c94ff36ef2f1772a%2F00005.jpg?generation=1588216578818404&amp;alt=media\" alt=\"\">\nits DCT coefficients\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F742af6b4aa507703d30dd464509cb25c%2F00005.jpg?generation=1588216591739411&amp;alt=media\" alt=\"\">\nand the changes by the three same methods\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F2bb4b9f371fb01013a420f507150dde7%2F00005.jpg?generation=1588217452580121&amp;alt=media\" alt=\"\">\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Fd7d5bda1baae80deae9435b2ee292a24%2F00005.jpg?generation=1588217576408170&amp;alt=media\" alt=\"\">\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F9716fe232bd7daae0ed0ef453bacc92f%2F00005.jpg?generation=1588217651616709&amp;alt=media\" alt=\"\"></p>\n\n<p>Interestingly, if you look at image 00004 which seem extremely simple :\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F9651b10103d86e9ece6a16b4e5a416de%2F00004.jpg?generation=1588217096214702&amp;alt=media\" alt=\"\">\nIts DCT are as follows:\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Fc7ff21767c84b30f090d2440a340f017%2F00004.jpg?generation=1588217144535281&amp;alt=media\" alt=\"\">\nfrom the pixels it is not obvious that the change will be spread all over the image ... yet from DCT coefs it seems more reasonnable right ?\nThere's the changes :\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F4dedc997ea9c665358ce42e9930d28b4%2F00004.jpg?generation=1588217472671295&amp;alt=media\" alt=\"\">\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F0c4fd3317257a6555880ec87a3a49f48%2F00004.jpg?generation=1588217684211671&amp;alt=media\" alt=\"\">\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Fea756974ecc64c82831ce74a4b9a7754%2F00004.jpg?generation=1588217630901317&amp;alt=media\" alt=\"\"></p>",
      "votes": null,
      "replies": [
        {
          "id": 827722,
          "author_name": "vovanf98",
          "author_url": "",
          "post_date": "04/30/2020 13:49:44",
          "content": "<p>Thanks!!! It is very useful and certainly enough for now:)</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 828301,
          "author_name": "yhn112",
          "author_url": "",
          "post_date": "04/30/2020 22:10:01",
          "content": "<p>FYI, I've fixed installation of jpegio in your notebook (in a kinda straightforward way), now it works: <a href=\"https://www.kaggle.com/yhn112/inspect-impact-of-steganography-on-dct-coefs\">https://www.kaggle.com/yhn112/inspect-impact-of-steganography-on-dct-coefs</a></p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 828501,
          "author_name": "remicogranne",
          "author_url": "",
          "post_date": "05/01/2020 05:14:15",
          "content": "<p><a href=\"/yhn112\">@yhn112</a> thanks a lot. \nI updated it almost at the very same time thank to <a href=\"/yousfi\">@yousfi</a> .\nHe also taught me how to use the !curl command but the ability to use !git really rocks as well ! Thanks a lot</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 867038,
      "author_name": "mazalgarab",
      "author_url": "",
      "post_date": "05/29/2020 23:48:57",
      "content": "<p>You may browse the following websites to learn of the algorithms (C++ language) in the view of Zeng et al. (2017).\nFree codes available to be downloaded: <a href=\"http://dde.binghamton.edu/download/\">http://dde.binghamton.edu/download/</a>\nPaper: <a href=\"https://arxiv.org/abs/1611.03233v2\">https://arxiv.org/abs/1611.03233v2</a></p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "825381": "Is there any relevant info about those algorithms. Unfortunately, i did not find any info:(",
    "826705": "Hello there,\n\nThere has been a quite comprehensive topic by @tpmeli which provides the source (papers) for those algorithms.\nIn brief, those are modifying by +/- 1 the values of DCT coefficients in order to hides the bits of secret message to be embedded.\n\nThe choice of those the DCT coefficients to be modified depend on a \"cost\" map, that is calculated quite heuristically and supposedly represent how much it will cost to use each and every coefs. The main different between those algorithm really is in this cost function.\n\nI am totally open to provide you with more information. \nHowever, I advise not try reproducing those methods and create more data because (1) I am far from certain it will bring an advantage and (2) I believe that the present dataset is large enough and especially comparable to the testing set ... there are many parameters that can affect image noise in which stego hide data",
    "826753": "The main idea was not to generate new samples but to get some additional info how the images were generated, so it would lead to more unique approach than just finding the optimal CNN architecture:)",
    "826931": "So did what I presented was enough or do you want more precision ? \nYou can actually check and the training samples and open directly the JPEG files to see the difference in terms of DCT coefficients using the JPEG toolbox\nhttps://github.com/klauscc/jpeg_toolbox_python (unfortunately it works like a charm in python2 and like a painful nightmare in Python3 ...)\nhttps://www.kaggle.com/haytamert/jpeg-compression",
    "827041": "I have tried to make a notebook to show the impact of steganography on DCT coefficients\n[https://www.kaggle.com/remicogranne/inspect-impact-of-steganography-on-dct-coefs](https://www.kaggle.com/remicogranne/inspect-impact-of-steganography-on-dct-coefs)\n\nunfortunately, it requires the jpeg toolbox which I was not able to add 😢 \nIf anyone can help on this that would be welcome :c\n\n**Note**I saved the DCT coefficients as \"images\" hence Red corresponds actually to the *luminance channel*, and Green / Blue are *Chrominances channels* (of course, the embedding is way more important in luminance as it carries way information ....)\n\nI show a few results below that show how the payload is spread into images taking into account both content and noise.\nInterestingly, there exist two approaches in steganalysis to detect changes in DCT coefficients ... using the DCT coefficients directly (but those as you can see are a nightmare to model) or decompressing the image and using pixels values exepcting it reveals the changes in the DCT (yet we are more use to model pixels ...)\n\n\nHere's some output look at image 00001:\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Fb3228b543675746e63562c078c4cdacf%2F00001.jpg?generation=1588216182123569&amp;alt=media)\nits DCT coefs\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Fcd94fbe9485b131912fc898e3bbf9716%2F00001.jpg?generation=1588216557384694&amp;alt=media)\n\nand the modification made by JMiPOD, obviously you would hide into the tree rather than into the blue sky ...\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Fb13eea1ed5f4e72a9a3e991e0cd9db91%2F00001.jpg?generation=1588217422545967&amp;alt=media)\n\nAs you can see, this adaptativity changes for different embedding .... see for JUNIWARD:\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F415a9b15aaf6c2eb3f149295db31d6b8%2F00001.jpg?generation=1588217502690956&amp;alt=media)\n\nand for UERD:\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Ffbbadd956c88c54114c96e4e893c97f2%2F00001.jpg?generation=1588217517374327&amp;alt=media)\n\n\nIt is even more obvious for image 00005\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F82d9da0bc3f02aa4c94ff36ef2f1772a%2F00005.jpg?generation=1588216578818404&amp;alt=media)\nits DCT coefficients\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F742af6b4aa507703d30dd464509cb25c%2F00005.jpg?generation=1588216591739411&amp;alt=media)\nand the changes by the three same methods\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F2bb4b9f371fb01013a420f507150dde7%2F00005.jpg?generation=1588217452580121&amp;alt=media)\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Fd7d5bda1baae80deae9435b2ee292a24%2F00005.jpg?generation=1588217576408170&amp;alt=media)\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F9716fe232bd7daae0ed0ef453bacc92f%2F00005.jpg?generation=1588217651616709&amp;alt=media)\n\n\nInterestingly, if you look at image 00004 which seem extremely simple :\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F9651b10103d86e9ece6a16b4e5a416de%2F00004.jpg?generation=1588217096214702&amp;alt=media)\nIts DCT are as follows:\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Fc7ff21767c84b30f090d2440a340f017%2F00004.jpg?generation=1588217144535281&amp;alt=media)\nfrom the pixels it is not obvious that the change will be spread all over the image ... yet from DCT coefs it seems more reasonnable right ?\nThere's the changes :\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F4dedc997ea9c665358ce42e9930d28b4%2F00004.jpg?generation=1588217472671295&amp;alt=media)\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2F0c4fd3317257a6555880ec87a3a49f48%2F00004.jpg?generation=1588217684211671&amp;alt=media)\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1951250%2Fea756974ecc64c82831ce74a4b9a7754%2F00004.jpg?generation=1588217630901317&amp;alt=media)",
    "827722": "Thanks!!! It is very useful and certainly enough for now:)",
    "828301": "FYI, I've fixed installation of jpegio in your notebook (in a kinda straightforward way), now it works: https://www.kaggle.com/yhn112/inspect-impact-of-steganography-on-dct-coefs",
    "828501": "yhn112 thanks a lot. \nI updated it almost at the very same time thank to @yousfi .\nHe also taught me how to use the !curl command but the ability to use !git really rocks as well ! Thanks a lot",
    "867038": "You may browse the following websites to learn of the algorithms (C++ language) in the view of Zeng et al. (2017).\nFree codes available to be downloaded: http://dde.binghamton.edu/download/\nPaper: https://arxiv.org/abs/1611.03233v2"
  },
  "source": "meta"
}