用PostgreSQL 处理 指纹 数据

简介:
+关注继续查看

标签

PostgreSQL , 指纹 , printfinger , pgafis , 特征值 , 索引


背景

pgafis是一个插件,支持存储指纹特征值,同时将指纹特征比对算法作为UDF编写到了数据库中,安装这个插件依赖指纹比对算法库。

https://www.nist.gov/services-resources/software/nist-biometric-image-software-nbis

https://github.com/lessandro/nbis

pgafis插件代码地址

https://github.com/hjort/pgafis

pgafis

pgAFIS - Automated Fingerprint Identification System support for PostgreSQL

fingers

Sample fingerprints data

    Table "public.fingerprints"
 Column |     Type     | Modifiers 
--------+--------------+-----------
 id     | character(5) | not null
 pgm    | bytea        | 
 wsq    | bytea        | 
 mdt    | bytea        | 
 xyt    | text         | 
Indexes:
    "fingerprints_pkey" PRIMARY KEY, btree (id)
  • "pgm" stores original raw fingerprint images (PGM)
  • "wsq" stores compressed fingerprint images (WSQ)
  • "mdt" stores fingerprint templates in XYTQ own binary format (MDT)
  • "xyt" stores fingerprint minutiae data in text format
afis=>
SELECT id,
  length(pgm) AS raw_bytes,
  length(wsq) AS wsq_bytes,
  length(mdt) AS mdt_bytes,
  length(xyt) AS xyt_chars
FROM fingerprints
LIMIT 5;

  id   | pgm_bytes | wsq_bytes | mdt_bytes | xyt_chars 
-------+-----------+-----------+-----------+-----------
 101_1 |     90015 |     27895 |       162 |       274
 101_2 |     90015 |     27602 |       186 |       312
 101_3 |     90015 |     27856 |       146 |       237
 101_4 |     90015 |     28784 |       154 |       262
 101_5 |     90015 |     27653 |       194 |       324
(5 rows)

Acquisition

Image Compression (WSQ)

afis=>
UPDATE fingerprints
SET wsq = cwsq(pgm, 2.25, 300, 300, 8, null)
WHERE wsq IS NULL;
  • compressed image in WSQ format can be generated from original fingerprint raw image (PGM format)

Feature Extraction (XYT)

afis=>
UPDATE fingerprints
SET mdt = mindt(wsq, true)
WHERE mdt IS NULL;
  • minutiae data (features) can be extracted from compressed WSQ image and stored in own binary format (MDT)

Verification (1:1)

afis=>
SELECT (bz_match(a.mdt, b.mdt) >= 20) AS match
FROM fingerprints a, fingerprints b
WHERE a.id = '101_1' AND b.id = '101_6';

 match 
-------
 t
(1 row)
  • given two fingerprint templates, they can be considered the same according to a threshold value (e.g., 20) defined by the application

Identification (1:N)

afis=>
SELECT a.id AS probe, b.id AS sample,
  bz_match(a.mdt, b.mdt) AS score
FROM fingerprints a, fingerprints b
WHERE a.id = '101_1' AND b.id != a.id
  AND bz_match(a.mdt, b.mdt) >= 23
LIMIT 3;

 probe | sample | score 
-------+--------+-------
 101_1 | 101_2  |    23
 101_1 | 101_4  |    24
 101_1 | 101_5  |    27
(3 rows)
  • sequential scan is performed on the table, but so far as a given number of templates (e.g., 3) having a match score above the defined threshold (e.g., 23)
afis=>
SELECT a.id AS probe, b.id AS sample,
  bz_match(a.xyt, b.xyt) AS score
FROM fingerprints a, fingerprints b
WHERE a.id = '101_1' AND b.id != a.id
  AND bz_match(a.mdt, b.mdt) >= 20
ORDER BY score DESC;

 probe | sample | score 
-------+--------+-------
 101_1 | 101_6  |    28
 101_1 | 101_5  |    27
 101_1 | 101_8  |    26
 101_1 | 101_2  |    23
 101_1 | 101_4  |    23
(5 rows)
  • "xyt" text field can be used for matching as well
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
16天前
|
SQL NoSQL 关系型数据库
PostgreSQL 准确且快速的数据对比方法
作为一款强大而广受欢迎的开源关系型数据库管理系统,PostgreSQL 在数据库领域拥有显著的市场份额。其出色的可扩展性、稳定性使其成为众多企业和项目的首选数据库。而在很多场景下(开发 | 生产环境同步、备份恢复验证、数据迁移、数据合并等),不同环境中的数据库数据可能导致数据的不一致,因此,进行数据库之间的数据对比变得至关重要。
16 0
|
18天前
|
关系型数据库 分布式数据库 PolarDB
沉浸式学习PostgreSQL|PolarDB 15: 企业ERP软件、网站、分析型业务场景、营销场景人群圈选, 任意字段组合条件数据筛选
在企业ERP软件、网站中经常会有一些让用户输入筛选条件(或者勾选筛选条件)的地方, 一个页面可能出现若干个选项, 每个选项用户可以进行勾选或下拉框选择. 例如淘宝网, 发货地是哪里, 商品价格范围, 商品类目, 内存大小, .... 很多选项提供选择. 分析业务场景, 经常会使用大宽表来表示对象的特征, 每个字段代表一个特征维度, 然后通过各个字段的组合条件来进行数据的统计分析. 营销场景, 和前面分析场景类似, 通过各个字段的组合条件圈选目标用户. 通常一个选项代表一个对象的某属性, 用户可能根据任意组合条件进行筛选, 本实验目标学习如何快速在任意字段组合条件输入搜索到满足条件的数据.
399 0
|
25天前
|
SQL NoSQL 关系型数据库
PostgreSQL数据对比:实现准确且高效的结果
NineData数据对比是一款云原生数据对比产品,支持PostgreSQL等数据库,提供结构对比、数据对比等功能,能够自动生成修复SQL,支持多种数据源,具有可视化界面、强劲性能、安全可靠等优势,适用于IDC自建、云主机自建以及云数据库等多种场景。
496 0
|
26天前
|
关系型数据库 物联网 PostgreSQL
沉浸式学习PostgreSQL|PolarDB 11: 物联网(IoT)、监控系统、应用日志、用户行为记录等场景 - 时序数据高吞吐存取分析
物联网场景, 通常有大量的传感器(例如水质监控、气象监测、新能源汽车上的大量传感器)不断探测最新数据并上报到数据库. 监控系统, 通常也会有采集程序不断的读取被监控指标(例如CPU、网络数据包转发、磁盘的IOPS和BW占用情况、内存的使用率等等), 同时将监控数据上报到数据库. 应用日志、用户行为日志, 也就有同样的特征, 不断产生并上报到数据库. 以上数据具有时序特征, 对数据库的关键能力要求如下: 数据高速写入 高速按时间区间读取和分析, 目的是发现异常, 分析规律. 尽量节省存储空间
210 1
|
2月前
|
JSON 关系型数据库 分布式数据库
|
2月前
|
SQL 存储 关系型数据库
探索关系型数据库:构建有序的数据世界
在数字化时代,数据以前所未有的速度增长和演变。关系型数据库作为数据管理的关键工具,为组织和个人提供了有效存储、检索和处理数据的方法。本文将带您深入了解关系型数据库的定义、原理和应用,以及它在今天的重要性。
47 0
|
2月前
|
SQL 存储 NoSQL
关系型数据和非关系型数据库概述
关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织。 非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。
143 3
关系型数据和非关系型数据库概述
|
4月前
|
存储 边缘计算 人工智能
莲子数据与阿里云开源PolarDB合作助力制造业数字化转型
因云而聚,携手共赢,莲子数据与众多科技公司一起成为PolarDB 开源社区的生态成员,作为PolarDB 开源数据库的生态合作企业,莲子数据库一体机结合PolarDB 的生态可以赋能广大工业企业,近期在工业数字化应用的一个实际案例就生动体现了软硬深度结合的价值。
|
5月前
|
关系型数据库 PostgreSQL
|
5月前
|
存储 数据采集 SQL
大数据数据采集的数据来源的已有数据库的数据之非关系型数据库
随着大数据时代的到来,数据采集成为大数据应用中不可或缺的一部分。在数据采集过程中,非关系型数据库已经逐渐成为了数据来源的重要组成部分之一。本文将介绍已有数据库中的非关系型数据库作为数据来源的特点以及其采集流程。
49 0
相关产品
云数据库 Redis 版
云数据库 MongoDB 版
云数据库 RDS
推荐文章
更多