題:
我如何準確知道兩幅圖像之間發生了什麼變化?
cabbey
2011-05-06 11:28:05 UTC
view on stackexchange narkive permalink

例如,對於最近關於JPEG壓縮的對話,我想比較兩個JPEG(一個壓縮級別為100,一個壓縮級別為95)之間變化的像素。 >

如何在沒有繁瑣的自定義軟件編程的情況下生成關於更改內容的良好視覺地圖?

不要將其作為答案提交,因為它可能不是照片的可行解決方案,但是GitHub(程序員站點)提供了一些比較圖像的有趣方法:https://github.com/cameronmcefee/Image-Diff-View-Modes/commit / 8e95f70c9c47168305970e91021072673d7cdad8嘗試單擊“ 2-up”,“滑動”,“洋蔥皮”和“差異”。
六 答案:
cabbey
2011-05-06 12:10:57 UTC
view on stackexchange narkive permalink

Photoshop +圖層FTW。 (是的,您也可以使用Gimp或具有相同功能的任何其他編輯軟件。)

從基礎圖像開始,在上述情況下,我使用了jpeg質量100圖像。

  1. 在其頂部創建一個新層
  2. 將第二個圖像粘貼到該層中
  3. 將層樣式設置為“差異”(請參見第一個圖像中的左粉紅色箭頭)下面)
  4. 在上面創建一個效果層(Layer> New Adjustment Layer> Threshold)
  5. 將效果設置為閾值(請參見下面第一個圖像中的右粉紅色箭頭)
  6. 將閾值設置為1
  7. ol>

    在生成的圖像中,兩個圖像之間任何有任何區別的像素均為白色。您可以通過更改閾值來對其進行調整,以使情況“有所不同”。

    示例顯示了Lightroom中jpeg 92和100之間存在很多差異。comparing jpeg 92 and 100 from LR with Photoshop layers

    示例在95和100之間完全沒有差異。comparing jpeg 95 and 100 from LR with Photoshop layers

    這不只是顯示二進制“是否已更改”,如果您想更詳細地了解它的更改量,例如按顏色通道,該怎麼辦?

    1. 將閾值調整層替換為曲線調整層。
    2. 編輯曲線
    3. 打開顯示裁剪
    4. 抓住右下角下方的輸入白色手柄並將其拖動到左側,直到可以達到的水平
    5. 慢慢地移回右側,直到看不到任何裁剪為止(預覽圖像為全黑)
    6. 關閉剪裁併保存曲線更改
    7. ol>

      結果像素越亮,它們在該顏色中的差異就越大。不利的一面是,您最終會遇到很多灰泥……因此有時只需將其閾值以查看差異在哪裡會更容易。這就是為什麼我同時構建這兩者並切換可見的原因。

      more descriptive view of the difference

Newb問題,但是您如何執行第4步“在其上創建效果層”?在任何地方都找不到。也是7年後,我可能正在使用最新版本,因為他們可能也更改了名稱?
Jin
2011-05-06 12:01:21 UTC
view on stackexchange narkive permalink

如果您使用Photoshop,請按以下步驟操作:

將兩個jpeg放在兩個單獨的圖層中的同一psd文件中。它們應完全重疊,因為它們的尺寸相同。 (最重要的是哪個)。

將圖層混合模式設置為“差異”。您會看到幾乎是黑色的結果。取決於兩個原始圖層之間的質量差異,您可能會看到或多或少的噪音。

enter image description here

當您留下像這樣的大黑洞時,僅靠差異並沒有多大幫助。 :)
@cabbey可以肯定,將100%到95%進行比較,您很可能會得到純黑色。但這就是您的問題是不是?在所有者答案中,您正在更改要比較的原始文件的值,這使它們不再具有原始壓縮設置。
在幾乎所有比較中,您實際上都會得到純黑色,因為差異很小。差異之後的閾值/曲線層對壓縮設置沒有任何作用,它只是有助於可視化差異準備好的黑湯的下限。 (我不是100%知道您的意思,所以我可能會朝另一個方向前進...。)
@cabbey如果您要對兩張圖像之間的差異進行純逐位運算,則僅“ Difference”混合模式即可為您提供。調整閾值/曲線時,雖然用肉眼可以看到明顯的結果,但它不能準確表示更改的內容。什麼時候做,您不再將100%和95%進行比較。
當然可以。壓縮級別不再重要,因為第二個photoshop將磁盤上的圖像加載到其內部緩衝區中,現在它是內存中的未壓縮像素陣列...如果這些像素到達那裡是因為圖像在那裡存在正方形斑點或因為它們是偽像壓縮級別的大小無關。
我很好奇,使用您的方法,您如何準確表示100%與70%之間以及100%與40%之間的差異?看來您只是盯著眼睛,直到區別變得明顯為止。
唯一引人注目的步驟是在曲線上設置輸出點或在閾值上設置截止點的位置(我很少在其中使用除1以外的任何值)。只要您為兩個可視化使用相同的點,就可以有意義地比較並行結果。它們都設置為以這種方式對可視化使用相同的“比例”。
@Jin您的意思是什麼-只需執行差異步驟即可獲得一點點差異,而其他任何混亂都只是為了幫助可視化可能很小的差異。經過以上所有討論,我是否有正確的理解?
Szabolcs
2012-08-08 19:13:48 UTC
view on stackexchange narkive permalink

所有圖像處理軟件包都應該使此操作變得容易。如果您可以使用該系統,我將向您展示如何在Mathematica中進行操作。 Mathematica是一種編程語言,但是進行這類操作真的很容易,因此,如果您可以使用它(例如,通過大學站點許可證),我建議您嘗試一下!

首先,導入圖像:

  img =導入[“ http://farm1.staticflickr.com/62/171463865_36ee36f70e.jpg”]  

使用以下命令將其重新壓縮JPEG壓縮

  img2 = ImportString @ ExportString [img,“ JPEG”,“ CompressionLevel” -> 0.35]  

Mathematica graphics

現在取像素值的差,首先將它們轉換為浮點數,以確保保留負值。

  diff = ImageSubtract [Image [img,“ Real”],Image [img2,“ Real”]]  

Mathematica graphics

在差異圖像上看不到太多(差異很小),並且負值被裁剪為黑色。因此,讓我們重新縮放所有值以填充整個動態範圍(最小值將縮放為0,最大值將縮放為1):

  ImageAdjust [diff]  

Mathematica graphics

ImageDifference 給出兩個圖像的絕對差,並且不產生負數。這是您更可能在圖像處理程序包中找到的操作,尤其是在GUI處理程序包(Photoshop,GIMP)中。

  ImageDifference [img,img2]  

Mathematica graphics

我們還可以採用單個RGB通道,例如紅色通道,並使用“相反”的顏色可視化正負差異:

  ArrayPlot [0.5 + ImageData [First @ ColorSeparate [diff,“ Red”]],ColorFunction ->“ RedGreenSplit”,ColorFunctionScaling -> False]  

Mathematica graphics

這是同一件事,差異擴大了5倍。 JPEG人工製品現在更加容易識別。

  ArrayPlot [0.5 + 5 ImageData [First @ ColorSeparate [diff,“ Red”]]],
ColorFunction ->“ RedGreenSplit”,ColorFunctionScaling -> False]  

Mathematica graphics

使用編程語言的優點是我們可以輕鬆地自動執行此操作並了解如何

  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]  

Mathematica graphics

看到腳本化/自動化的選項總是很高興! :)
mikael
2018-03-03 01:16:23 UTC
view on stackexchange narkive permalink

您可以使用Imagemagick命令行工具。

  composite imagesrc1.jpg imagesrc2.jpg-撰寫差異diffs.jpg  

將提供絕對值每個RGB通道的差異。

Fredrik Mörk
2011-05-06 17:20:53 UTC
view on stackexchange narkive permalink

GitHub在網絡上內置了一些有趣的圖像差異工具,如此處所述本演示中所示

Dan
2011-05-06 12:04:39 UTC
view on stackexchange narkive permalink
  1. 在GIMP或Photoshop中打開一個圖像。
  2. 將第二個圖像作為新層添加到第一個圖像上。
  3. 設置
  4. ol>

    最頂層是“差異”。在生成的圖像中,黑色部分顯示的是原始圖像相同的地方,任何淺色的部分則顯示出差異。

當您留下像這樣的大黑洞時,僅靠差異並沒有多大幫助。 :)
您始終可以調整結果圖像上的色階。每當我使用這種技術時,我所擁有的圖片就足以使他們看到變化了:)


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...