imgsmlr
使用Haar小波分析计算图片相似度
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
imgsmlr | 1.0 | FEAT | PostgreSQL | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 2830 | imgsmlr | 否 | 是 | 否 | 是 | 否 | 是 | - |
breaks on el10
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.0 | 1817161514 | imgsmlr | - |
| RPM | PIGSTY | 1.0 | 1817161514 | imgsmlr_$v | - |
| DEB | PIGSTY | 1.0 | 1817161514 | postgresql-$v-imgsmlr | - |
构建
您可以使用 pig build 命令构建 imgsmlr 扩展的 RPM / DEB 包:
BASH
安装
您可以直接安装 imgsmlr 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
BASH
使用 pig 或者是 apt/yum/dnf 安装扩展:
安装
BASH
pig
BASH
dnf
BASH
apt
BASH
创建扩展:
SQL
用法
imgsmlr 扩展基于 Haar 小波变换实现了相似图片搜索功能。它提供了两种数据类型和用于将图片转换为可搜索签名的函数。
SQL
数据类型
| 数据类型 | 存储长度 | 描述 |
|---|---|---|
pattern | 16388 字节 | 图片的 Haar 小波变换结果 |
signature | 64 字节 | pattern 的短表示,用于快速 GiST 索引搜索 |
函数
| 函数 | 返回类型 | 描述 |
|---|---|---|
jpeg2pattern(bytea) | pattern | 将 JPEG 图片数据转换为 pattern |
png2pattern(bytea) | pattern | 将 PNG 图片数据转换为 pattern |
gif2pattern(bytea) | pattern | 将 GIF 图片数据转换为 pattern |
pattern2signature(pattern) | signature | 从 pattern 创建 signature |
shuffle_pattern(pattern) | pattern | 打乱 pattern 以降低对图片位移的敏感度 |
运算符
| 运算符 | 左操作数 | 右操作数 | 返回类型 | 描述 |
|---|---|---|---|---|
<-> | pattern | pattern | float8 | 两个 pattern 之间的欧氏距离 |
<-> | signature | signature | float8 | 两个 signature 之间的欧氏距离 |
signature 类型支持基于 <-> 运算符的 GiST KNN 索引。
示例
从 JPEG 图片创建 pattern 和 signature 表:
SQL
搜索与给定图片最相似的前 10 张图片:
SQL
内层查询利用 GiST 索引按 signature 选出前 100 个候选项,外层查询按 pattern 距离精炼到前 10 个。