Watermarking
- zoneminder
- Site Admin
- Posts: 5215
- Joined: Wed Jul 09, 2003 2:07 pm
- Location: Bristol, UK
- Contact:
All the jpegs are created by the 3rd party libjpeg library, which is somewhat advanced in years but pretty much the standard. There is also the jpeg2000 and jpeg mmx libraries which people have reported varying degrees of success with. I've also heard of much faster commercial libraries but they obviously cost money, which handicaps me a bit. I assume the watermark would be added to the jpeg data before being written to file?
Phil
Phil
Hi,
Yes you are correct - the watermark would be applied before the file is written.
I will get one of our developers to look into it and see what we can do.
One question I would ask you is your thoughts on the generation of a ID number for each system to link the watermarked files to each ZM system?
Is there a unique ID generated already somewhere in the code? What do you think?
Regards,
Deano
Yes you are correct - the watermark would be applied before the file is written.
I will get one of our developers to look into it and see what we can do.
One question I would ask you is your thoughts on the generation of a ID number for each system to link the watermarked files to each ZM system?
Is there a unique ID generated already somewhere in the code? What do you think?
Regards,
Deano
- zoneminder
- Site Admin
- Posts: 5215
- Joined: Wed Jul 09, 2003 2:07 pm
- Location: Bristol, UK
- Contact:
Seems to me you have to decide *what you're trying to do*.
If all you want to do is mark individual frames, you could GPG encrypt a batch of random numbers plus the timestamp data for the frame, and use stagno tools to embed that in the picture itself.
If you want to prove that a sequence is unaltered and nothing is missing, you have a different problem.
But remember: pictures are hearsay, anyway; what's *admissible* in court is usually "Yes, I took that picture, and that's what the scene looked like."
I suspect the exception on which security footage is admissible is the "contemporaneously maintained business records" one, though IANAL, and what the requirements are for that, I don't know.
The person to ask would be a prosecuting attorney, I suspect.
If all you want to do is mark individual frames, you could GPG encrypt a batch of random numbers plus the timestamp data for the frame, and use stagno tools to embed that in the picture itself.
If you want to prove that a sequence is unaltered and nothing is missing, you have a different problem.
But remember: pictures are hearsay, anyway; what's *admissible* in court is usually "Yes, I took that picture, and that's what the scene looked like."
I suspect the exception on which security footage is admissible is the "contemporaneously maintained business records" one, though IANAL, and what the requirements are for that, I don't know.
The person to ask would be a prosecuting attorney, I suspect.
From an investigators standpoint this all seems really great but how is one supposed to verify that all the images are in fact intact? Yet something else that everyone would have to be aware of in order to inspect it and verify that in fact the images haven't been tampered with. It would make more since to use a standard already in practice so that we can use the tools we already have that are tried and true. A watermark is basically a bumpmap where an image is overlaid on top of another image to create something we can visually inspect. The other type of coarse digital watermarking is a technique for adding hidden copyright or other verification messages in digital audio, video or image signals. That hidden message can be a group of bits or a name/place etc information pertaining to the signal or the creator of the signal. The first method being the usual that we normally see for DVR's is the most typical.
Here is a link to Peter Meerwald's page where you can find C source for digital watermarking:
http://www.cosy.sbg.ac.at/~pmeerw/
Find the watermarking link there.
If there is a way to deploy this with ZM and maybe use Phils idea to use various bits of the environment would be superb.
The other type bump mapping you can find with any google search.
IMHO I think it best if watermarking is to be deployed it needs to follow the standards to be regarded as viable evidence.
Also someone might be interested in this:
http://watermarker.com/books/Jpeg2000-.aspx
Regards,
Cordel
Here is a link to Peter Meerwald's page where you can find C source for digital watermarking:
http://www.cosy.sbg.ac.at/~pmeerw/
Find the watermarking link there.
If there is a way to deploy this with ZM and maybe use Phils idea to use various bits of the environment would be superb.
The other type bump mapping you can find with any google search.
IMHO I think it best if watermarking is to be deployed it needs to follow the standards to be regarded as viable evidence.
Also someone might be interested in this:
http://watermarker.com/books/Jpeg2000-.aspx
Regards,
Cordel
Hello, first post
I read about watermarking image, and I think I can help if you want to do something like alphablend a logo or another image over the original RGB frame.
I have such function programmed in my project, called videodog.
Other than that, stuff like put a digital signature inside a jpeg file can be done, IIRC, by some padding fields in the file structure...
Best regards
I read about watermarking image, and I think I can help if you want to do something like alphablend a logo or another image over the original RGB frame.
I have such function programmed in my project, called videodog.
Other than that, stuff like put a digital signature inside a jpeg file can be done, IIRC, by some padding fields in the file structure...
Best regards
--
Isn't a lie, if you believe it (George Constanza)
Isn't a lie, if you believe it (George Constanza)
As long as there is no apps on the same machine to edit images, I think you could get away with only watermarking them on export. Since your can water mark the image at any time I would strongly suggest that if you were in an area that would require water marking you would also have to prove that there is no way the image was tampered with while it was on the server so it would be a really good idea not to have any image editor loaded.
-
- Posts: 5111
- Joined: Wed Jun 08, 2005 8:07 pm
- Location: Midlands UK
just thought id raise this one again for a couple of reasons.
I have been doing a bit of research into jpgs and i beleive you can store certain infomation inside of them (exif?). If this is the case could we insert things like
Alarm frame boolean
a string for watermarking, with a checksum (basic would do if someone commited to 'faking it' im sure any system has weaknesses
someother useful info
This could then be checked
Id like the alarm thing for my own uses and i assume this would tax the server too much as its doing this sort of work anyhow?
I have been doing a bit of research into jpgs and i beleive you can store certain infomation inside of them (exif?). If this is the case could we insert things like
Alarm frame boolean
a string for watermarking, with a checksum (basic would do if someone commited to 'faking it' im sure any system has weaknesses
someother useful info
This could then be checked
Id like the alarm thing for my own uses and i assume this would tax the server too much as its doing this sort of work anyhow?
James Wilson
Disclaimer: The above is pure theory and may work on a good day with the wind behind it. etc etc.
http://www.securitywarehouse.co.uk
Disclaimer: The above is pure theory and may work on a good day with the wind behind it. etc etc.
http://www.securitywarehouse.co.uk
Hmmm I didn't think of using the EXIF headers, that's a good idea. Some useful info to embed could be:
* alarm time/date
* a customizable string of text
* hostid of the server (output of "hostid" command - useful to prove the capture came from the zoneminder pc)
* Event ID (that the frame is from)
Inserting this data into every frame would probably be too intensive, if not a waste of space. Perhaps it could be inserted into just the first frame, or first and last frame.
* alarm time/date
* a customizable string of text
* hostid of the server (output of "hostid" command - useful to prove the capture came from the zoneminder pc)
* Event ID (that the frame is from)
Inserting this data into every frame would probably be too intensive, if not a waste of space. Perhaps it could be inserted into just the first frame, or first and last frame.
-
- Posts: 5111
- Joined: Wed Jun 08, 2005 8:07 pm
- Location: Midlands UK
oh i see if its too intesive not prabably a good idea then. Problem with only doing the first and last frame is chances are the fram you would use in evidence wouldnt be the first or last one, especially (like i do) you mainly use mocord.
James Wilson
Disclaimer: The above is pure theory and may work on a good day with the wind behind it. etc etc.
http://www.securitywarehouse.co.uk
Disclaimer: The above is pure theory and may work on a good day with the wind behind it. etc etc.
http://www.securitywarehouse.co.uk
-
- Posts: 5111
- Joined: Wed Jun 08, 2005 8:07 pm
- Location: Midlands UK
great but technically mpeg's arnt admissable in the uk as evidence as there condistional refresh based
sorry
sorry
James Wilson
Disclaimer: The above is pure theory and may work on a good day with the wind behind it. etc etc.
http://www.securitywarehouse.co.uk
Disclaimer: The above is pure theory and may work on a good day with the wind behind it. etc etc.
http://www.securitywarehouse.co.uk
Maybe that link will help: http://www.iqeye.com/IQauthenticate.html
IQinvision did it in the camera. You just send the pictures to them and they will determine if the image is original or was edited.
Ivan
IQinvision did it in the camera. You just send the pictures to them and they will determine if the image is original or was edited.
Ivan
While reading through this, something occurred to me. It would be highly CPU intensive and I don't know if it'd be practical or not, but why not calculate the md5sum of each image as it's captured and store that in the DB somewhere? (If it wouldn't alter the contents of the file and therefore it's MD5, it could be stored in the file information header itself; I'm thinking one of the text fields that you can set when saving a jpeg in GIMP.)
Like I said, calculating the MD5 of each and every frame captured would be highly CPU intensive, but it'd be another method of proving the image wasn't altered.
Like I said, calculating the MD5 of each and every frame captured would be highly CPU intensive, but it'd be another method of proving the image wasn't altered.
This message is made up of not less than 90% recycled electrons.