2016-11-07 63 views
0

我有一個應用程序,我將2個UIImage實例作爲輸入,目標是提供一個指示如何不同(或類似)的百分比值作爲輸出。 UIKit或Core Graphics中有什麼可以用來做到這一點?例如,100%表示完美匹配。2圖像之間的百分比差異

這裏是我的輸入數據:

[first image] 1

[second image] 2

我希望小於100%以上,因爲它們顯然是不同的。

也向第三方提出建議。

+0

你想檢查simulateity?像素,圖像內容(兩個圖像都包含一條魚),... – shallowThought

+0

我想檢查像素的相似性。基本上,我試圖將空白簽名框的參考圖像與同一個簽名框的另一個圖像進行比較,但簽名可能存在也可能不存在。如果不存在,則圖像是相同的,我認爲沒有簽名。否則,如果結果小於100%,我可以斷定有人可能簽署了該地區。 –

+0

我如何理解你想知道圖像是否相等。在這種情況下,您可以使用'=='運算符。 'if image1 == image2 {//沒有簽名} else {// signatur}' – shallowThought

回答

0

實現這一目標的一個非常簡單的方法是迭代兩個圖像和comapre每個像素。通過像素的寬度和高度,您可以以百分比值的形式獲得像素的差異。 這裏是swift中的一個示例實現,展示瞭如何迭代圖像的像素。它還顯示瞭如何獲得每個像素的R,G和B值(因此我是thnik)應該作爲比較的基礎:

import Foundation 
import QuartzCore 
import AppKit 

let imagePath : NSURL? = NSURL(fileURLWithPath: "/Users/fabi/Desktop/Test.JPG" ); 

if imagePath != nil { 

var image = CIImage(contentsOfURL: imagePath) 

var imageProperties : NSDictionary = image.properties() 


var imageWidth : NSNumber? = imageProperties.valueForKey("PixelHeight") as? NSNumber 
var imageHeight : NSNumber? = imageProperties.valueForKey("PixelWidth") as? NSNumber 

println(imageWidth?.integerValue) 
println(imageHeight?.integerValue) 

var bitmapImage : NSBitmapImageRep = NSBitmapImageRep(CIImage: image) 

for var w = 0; w <= imageHeight?.integerValue; ++w { 
    for var h = 0; h <= imageWidth?.integerValue; ++h { 
     var pixelColor : NSColor? = bitmapImage.colorAtX(w, y: h) 
     println("R: " + pixelColor?.redComponent);   
     println("G: " + pixelColor?.greenComponent); 
     println("B: " + pixelColor?.blueComponent); 
    } 
} 
} 
+0

不幸的是,我需要解決的iOS和不能使用AppKit。 –