सभी इमेज प्रोसेसिंग पैकेजों को यह आसान बनाना चाहिए। यदि आप इस प्रणाली का उपयोग करते हैं, तो मैं आपको दिखाऊंगा कि यह गणितज्ञ में कैसे किया जाता है। मैथेमेटिका एक प्रोग्रामिंग भाषा है, लेकिन इस प्रकार के जोड़तोड़ करना वास्तव में आसान है, इसलिए यदि आपके पास इसका उपयोग है (जैसे कि एक विश्वविद्यालय साइट लाइसेंस के माध्यम से), तो मैं आपको इसे एक बार देने की सलाह देता हूं!
सबसे पहले, छवि आयात करें:
img = Import["http://farm1.staticflickr.com/62/171463865_36ee36f70e.jpg"]
JPEG कम्प्रेशन का उपयोग करके इसे पुनः प्राप्त करें
img2 = ImportString@ExportString[img, "JPEG", "CompressionLevel" -> 0.35]
अब पिक्सेल मानों का अंतर लें, उन्हें नकारात्मक बिंदुओं को संरक्षित करने के लिए पहले फ्लोटिंग पॉइंट नंबरों में परिवर्तित करना।
diff = ImageSubtract[Image[img, "Real"], Image[img2, "Real"]]
अंतर छवि पर बहुत अधिक दिखाई नहीं देता है (अंतर छोटा है), और नकारात्मक मानों को काले रंग में क्लिप किया जाता है। तो चलो पूरी गतिशील रेंज को भरने के लिए सभी मानों को फिर से जोड़ते हैं (न्यूनतम को 0 तक बढ़ाया जाएगा, अधिकतम 1):
ImageAdjust[diff]
ImageDifference
दो छवियों का पूर्ण अंतर देता है, और कोई नकारात्मक संख्या नहीं पैदा करता है। यह वह ऑपरेशन है जो आपको इमेज प्रोसेसिंग पैकेज, विशेष रूप से GUI वाले (फ़ोटोशॉप, GIMP) में मिलने की संभावना है।
ImageDifference[img, img2]
हम एक आरजीबी चैनल भी ले सकते हैं, उदाहरण के लिए लाल एक, और 'विरोध' रंगों का उपयोग करके सकारात्मक और नकारात्मक अंतर की कल्पना करें:
ArrayPlot[0.5 + ImageData[First@ColorSeparate[diff, "Red"]],
ColorFunction -> "RedGreenSplit", ColorFunctionScaling -> False]
यहाँ एक ही बात है, 5 बार अंतर के साथ। जेपीईजी आर्टिफैक्ट अब अधिक पहचानने योग्य हैं।
ArrayPlot[0.5 + 5 ImageData[First@ColorSeparate[diff, "Red"]],
ColorFunction -> "RedGreenSplit", ColorFunctionScaling -> False]
एक प्रोग्रामिंग भाषा का उपयोग करने का लाभ यह है कि हम इसे आसानी से स्वचालित कर सकते हैं और देख सकते हैं कि 0.1 और 1.0 के बीच "संपीड़न स्तरों" के लिए अंतर कैसे बदलता है:
Grid@Partition[Table[
ArrayPlot[
0.5 + ImageData[
First@ColorSeparate[
ImageSubtract[Image[img, "Real"],
Image[ImportString@
ExportString[img, "JPEG", "CompressionLevel" -> c],
"Real"]], "Red"]], ColorFunction -> "RedGreenSplit",
ColorFunctionScaling -> False],
{c, 0.1, 1, 0.1}
], 5]