After a day of research this implementation seems to be the first piece of python code that manages to deliver a scale invariant robust watermark solution where resizing of an image does not create direct problems, and works fast. Just wow. Very cool.
I do notice a problem where I wonder if this could be resolved with some additional magic. Given that the features within the image matched between image, my assumption is that there should be more than enough room where information could be embedded.


I wanted to try if I could extend the grayDecoder and grayEncoder with Reed-Solomon. For this I have shrunken down the watermark one column/row, added recovery bits to fill up the matrix, but I was not able to get this to work at this specific location. Technically my implementation only reordered the matrix, but this did not give resilience either.

I have also added the Reed-Solomon code into the image itself (20 symbols). But by itself it cannot restore the input.


The image uses 4 areas of 1024 bytes to encode the watermark, this could obviously be increased by adding more divisions, but since there are more regions, why not holistically use all the regions as an ensemble?
After a day of research this implementation seems to be the first piece of python code that manages to deliver a scale invariant robust watermark solution where resizing of an image does not create direct problems, and works fast. Just wow. Very cool.
I do notice a problem where I wonder if this could be resolved with some additional magic. Given that the features within the image matched between image, my assumption is that there should be more than enough room where information could be embedded.
I wanted to try if I could extend the grayDecoder and grayEncoder with Reed-Solomon. For this I have shrunken down the watermark one column/row, added recovery bits to fill up the matrix, but I was not able to get this to work at this specific location. Technically my implementation only reordered the matrix, but this did not give resilience either.
I have also added the Reed-Solomon code into the image itself (20 symbols). But by itself it cannot restore the input.
The image uses 4 areas of 1024 bytes to encode the watermark, this could obviously be increased by adding more divisions, but since there are more regions, why not holistically use all the regions as an ensemble?