2016-11-07 38 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。 –