Tüm görüntü işleme paketleri bunu kolaylaştırmalıdır. Bu sisteme erişiminiz varsa, bunu Mathematica'da nasıl yapacağınızı göstereceğim. Mathematica bir programlama dilidir, ancak bu tür manipülasyonları yapmak gerçekten çok kolaydır, bu nedenle erişiminiz varsa (örneğin bir üniversite site lisansı aracılığıyla), bir deneme yapmanızı öneririm!
İlk önce görüntüyü içe aktarın:
img = Import["http://farm1.staticflickr.com/62/171463865_36ee36f70e.jpg"]
JPEG sıkıştırması kullanarak yeniden sıkıştır
img2 = ImportString@ExportString[img, "JPEG", "CompressionLevel" -> 0.35]
Şimdi, negatif değerlerin korunmasını sağlamak için önce bunları kayan nokta sayılarına dönüştürerek piksel değerlerinin farkını alın.
diff = ImageSubtract[Image[img, "Real"], Image[img2, "Real"]]
Fark görüntüsünde pek bir şey görünmüyor (fark çok küçük) ve negatif değerler siyaha kırpılıyor. Öyleyse, tüm dinamik aralığı dolduracak şekilde tüm değerleri kaldıralım (minimum 0, maksimum 1 olacak şekilde ölçeklenecek):
ImageAdjust[diff]
ImageDifference
İki görüntünün mutlak farkını verir ve negatif sayı üretmez. Bu, görüntü işleme paketlerinde, özellikle GUI'lerde (Photoshop, GIMP) bulmanız daha muhtemel olan işlemdir.
ImageDifference[img, img2]
Ayrıca örneğin kırmızı olan tek bir RGB kanalını alabilir ve 'karşıt' renkleri kullanarak pozitif ve negatif farkları görselleştirebiliriz:
ArrayPlot[0.5 + ImageData[First@ColorSeparate[diff, "Red"]],
ColorFunction -> "RedGreenSplit", ColorFunctionScaling -> False]
İşte aynı şey, farklar 5 kat artar. JPEG eserleri şimdi daha tanınabilir.
ArrayPlot[0.5 + 5 ImageData[First@ColorSeparate[diff, "Red"]],
ColorFunction -> "RedGreenSplit", ColorFunctionScaling -> False]
Bir programlama dili kullanmanın avantajı, bunu kolayca otomatikleştirebilmemiz ve "sıkıştırma seviyeleri" için farkın 0,1 ile 1,0 arasında nasıl değiştiğini görebilmemizdir:
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]