图像属性与过滤

更新时间:
复制 MD 格式

图像有效性验证、元数据提取、清晰度计算、感知哈希和尺寸过滤函数。

本文函数由 Python 多模态函数库提供(VVR 11.8+),使用前需在 SQL 作业开头添加:

LOAD MODULE python;
USE MODULES python, core;

完整示例与IMAGE类型请参见图像函数使用概述。

函数一览

函数

说明

IS_VALID_IMAGE

判断图片是否通过有效性检查

IMAGE_METADATA

提取图像宽度、高度、通道数、模式和格式

IMAGE_ASPECT_RATIO

计算宽高比

IMAGE_SHARPNESS

使用拉普拉斯方差计算清晰度

IMAGE_HASH

计算感知哈希值

IMAGE_SIZE_FILTER

按像素尺寸过滤

IMAGE_SHAPE_FILTER

按宽高比过滤

IMAGE_FILE_SIZE_FILTER

按编码文件大小过滤

IS_VALID_IMAGE

判断输入图片是否通过轻量级有效性检查,并可检查已解码图片能否转换为指定的 mode。

IS_VALID_IMAGE(image_input [, mode [, pixel_limit]])

参数

类型

默认值

说明

image_input

IMAGE / BYTES

必填

解码后的图像或编码后的图像字节。

mode

STRING

NULL

验证是否可转换到目标模式。NULL 表示不检查目标模式。

pixel_limit

INT

NULL

超过此像素数的图像判定为无效。NULL 表示不设置用户自定义像素上限。

返回类型: BOOLEAN NOT NULL

NULL、损坏图像或超过像素上限的输入返回 FALSE。

SELECT * FROM images
WHERE IS_VALID_IMAGE(img, 'RGB', 67108864);

IMAGE_METADATA

提取图像宽度、高度、通道数、模式和编码格式。

IMAGE_METADATA(image_input)

输入类型: IMAGE / BYTES

返回类型: ROW<width INT, height INT, channels INT, mode STRING, format STRING>

NULL 或无法读取元数据的输入返回 NULL。

字段

说明

width

图像宽度,单位像素。

height

图像高度,单位像素。

channels

图像通道数。

mode

图像模式。对解码后的 IMAGE 输入,返回解码图像模式;对编码字节输入,返回原始图像容器中的模式名称。

format

编码容器格式,如 'JPEG'、'PNG'、'WEBP';解码后的 IMAGE 返回 'UNKNOWN'。

SELECT
  IMAGE_METADATA(img).width,
  IMAGE_METADATA(img).height,
  IMAGE_METADATA(img).mode,
  IMAGE_METADATA(img).format
FROM images;

IMAGE_ASPECT_RATIO

计算宽高比 width / height。

IMAGE_ASPECT_RATIO(image_input)

输入类型: IMAGE / BYTES

返回类型: DOUBLE

NULL、无效图像或无法读取尺寸的输入返回 NULL。

SELECT IMAGE_ASPECT_RATIO(img) FROM images;

IMAGE_SHARPNESS

使用拉普拉斯方差计算图像清晰度。值越高通常表示边缘越清晰、细节越丰富,值越低通常表示图像越模糊。

IMAGE_SHARPNESS(image_input [, max_edge [, allow_upscale]])

参数

类型

默认值

说明

image_input

IMAGE

必填

解码后的图像。

max_edge

INT

NULL

计算前将最长边缩放到此值。NULL 表示使用原始尺寸。

allow_upscale

BOOLEAN

FALSE

当 max_edge 超过图像尺寸时是否允许放大。NULL 表示与 FALSE 一样,不放大小图。

返回类型: DOUBLE,原始清晰度指标,取值范围为 [0, +∞),不做归一化。

NULL 输入返回 NULL。

与 IMAGE_QUALITY_SCORE 不同,IMAGE_SHARPNESS 只衡量清晰度;阈值会受到图像尺寸、纹理、对比度和噪声影响。需要跨图比较时,建议设置固定的 max_edge。

SELECT * FROM images
WHERE IMAGE_SHARPNESS(img, 512, FALSE) > 100;

IMAGE_HASH

计算图像感知哈希值。

IMAGE_HASH(image_input [, method])

参数

类型

默认值

说明

image_input

IMAGE

必填

解码后的图像。

method

STRING NOT NULL

'phash'

哈希算法,支持 'phash'、'dhash'、'ahash'。

返回类型: STRING,十六进制编码的哈希值。

SELECT IMAGE_HASH(img, 'dhash') FROM images;

IMAGE_SIZE_FILTER

按像素尺寸过滤图像。

IMAGE_SIZE_FILTER(image_input, min_w [, min_h [, max_w [, max_h]]])

参数

类型

默认值

说明

image_input

IMAGE / BYTES

必填

解码后的图像或编码后的图像字节。

min_w

INT

NULL

最小宽度。NULL 表示不设置最小宽度。

min_h

INT

NULL

最小高度。NULL 表示不设置最小高度。

max_w

INT

NULL

最大宽度。NULL 表示不设置最大宽度。

max_h

INT

NULL

最大高度。NULL 表示不设置最大高度。

返回类型: BOOLEAN NOT NULL

图像同时满足所有已设置的尺寸约束时返回 TRUE;NULL 或无效输入返回 FALSE。至少需要设置一个尺寸边界。

SELECT * FROM images
WHERE IMAGE_SIZE_FILTER(img, 256, 256, 4096, 4096);

IMAGE_SHAPE_FILTER

按宽高比过滤图像。

IMAGE_SHAPE_FILTER(image_input, min_ratio [, max_ratio])

参数

类型

默认值

说明

image_input

IMAGE / BYTES

必填

解码后的图像或编码后的图像字节。

min_ratio

DOUBLE

NULL

最小宽高比。NULL 表示不设置最小宽高比。

max_ratio

DOUBLE

NULL

最大宽高比。NULL 表示不设置最大宽高比。

返回类型: BOOLEAN NOT NULL

图像宽高比满足所有已设置的约束时返回 TRUE;NULL、无效输入或无法读取尺寸时返回 FALSE。

SELECT * FROM images
WHERE IMAGE_SHAPE_FILTER(img, 0.5, 2.0);

IMAGE_FILE_SIZE_FILTER

按编码文件大小过滤图像。该函数只接受编码字节,不接受 IMAGE。

IMAGE_FILE_SIZE_FILTER(image_bytes, min_bytes [, max_bytes])

参数

类型

默认值

说明

image_bytes

BYTES

必填

编码后的图像字节。

min_bytes

INT

NULL

最小编码大小。NULL 表示不设置最小大小。

max_bytes

INT

NULL

最大编码大小。NULL 表示不设置最大大小。

返回类型: BOOLEAN NOT NULL

编码字节大小满足所有已设置的约束时返回 TRUE;NULL 输入返回 FALSE。

SELECT * FROM raw_images
WHERE IMAGE_FILE_SIZE_FILTER(img_bytes, 1024, 10 * 1024 * 1024);