【问题标题】:Percentage difference between 2 images2 张图像之间的百分比差异
【发布时间】:2017-03-20 18:52:08
【问题描述】:

我有一个应用程序,我将 2 个 UIImage 实例作为输入,目的是提供一个百分比值作为输出,指示不同(或相似)的程度。 UIKit 或 Core Graphics 中有什么可以用来做这件事的吗?例如,100% 表示完美匹配。

这是我的输入数据:

]1

]2

我预计上述情况不到 100%,因为它们明显不同。

也接受第 3 方的建议。

【问题讨论】:

  • 你想检查什么的相似性?像素,图像内容(两个图像都包含一条鱼),...
  • 我想检查像素相似度。基本上,我正在尝试将空签名框的参考图像与同一签名框的另一个图像进行比较,但签名可能存在也可能不存在。如果不存在,那么图像是相同的,我断定没有签名。否则,如果结果低于 100%,我可以断定有人可能已经签署了该区域。
  • 我如何理解您想知道图像是否相等。在这种情况下,您可以使用== 运算符。 if image1 == image2 {//no signature} else { //signatur}
  • 类似的东西,是的。但如果它们不相等,我想要一个显示它们有多么不同的值。比如我上面的图片有一些不同(一个没有签名,顶部没有浅灰色条),但也有一些相似之处(所有者签名标签、X 标记等)
  • 那么你真正想比较的是签约的相似度?

标签: ios opencv image-processing uiimage


【解决方案1】:

实现这一点的一个非常非常简单的方法是遍历两个图像并比较每个像素。使用像素的宽度和高度,您将能够以百分比值的形式获得像素的差异。 这是一个快速的示例实现,展示了如何迭代图像的像素。它还展示了如何获取每个像素的 R、G 和 B 值(所以我认为)应该是比较的基础:

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 );
    }
}
}

【讨论】:

  • 很遗憾,我需要为iOS解决,无法使用AppKit。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-07
  • 2013-06-18
相关资源
最近更新 更多