图像有效性验证、元数据提取、清晰度计算、感知哈希和尺寸过滤函数。
本文函数由 Python 多模态函数库提供(VVR 11.8+),使用前需在 SQL 作业开头添加:
LOAD MODULE python;
USE MODULES python, core;完整示例与IMAGE类型请参见图像函数使用概述。
函数一览
函数 | 说明 |
判断图片是否通过有效性检查 | |
提取图像宽度、高度、通道数、模式和格式 | |
计算宽高比 | |
使用拉普拉斯方差计算清晰度 | |
计算感知哈希值 | |
按像素尺寸过滤 | |
按宽高比过滤 | |
按编码文件大小过滤 |
IS_VALID_IMAGE
判断输入图片是否通过轻量级有效性检查,并可检查已解码图片能否转换为指定的 mode。
IS_VALID_IMAGE(image_input [, mode [, pixel_limit]])参数 | 类型 | 默认值 | 说明 |
image_input |
| 必填 | 解码后的图像或编码后的图像字节。 |
mode |
|
| 验证是否可转换到目标模式。 |
pixel_limit |
|
| 超过此像素数的图像判定为无效。 |
返回类型: 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。
字段 | 说明 |
| 图像宽度,单位像素。 |
| 图像高度,单位像素。 |
| 图像通道数。 |
| 图像模式。对解码后的 IMAGE 输入,返回解码图像模式;对编码字节输入,返回原始图像容器中的模式名称。 |
| 编码容器格式,如 |
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 |
| 必填 | 解码后的图像。 |
max_edge |
|
| 计算前将最长边缩放到此值。 |
allow_upscale |
|
| 当 max_edge 超过图像尺寸时是否允许放大。 |
返回类型: 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 |
| 必填 | 解码后的图像。 |
method |
|
| 哈希算法,支持 |
返回类型: 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 |
| 必填 | 解码后的图像或编码后的图像字节。 |
min_w |
|
| 最小宽度。 |
min_h |
|
| 最小高度。 |
max_w |
|
| 最大宽度。 |
max_h |
|
| 最大高度。 |
返回类型: 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 |
| 必填 | 解码后的图像或编码后的图像字节。 |
min_ratio |
|
| 最小宽高比。 |
max_ratio |
|
| 最大宽高比。 |
返回类型: 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 |
| 必填 | 编码后的图像字节。 |
min_bytes |
|
| 最小编码大小。 |
max_bytes |
|
| 最大编码大小。 |
返回类型: BOOLEAN NOT NULL
编码字节大小满足所有已设置的约束时返回 TRUE;NULL 输入返回 FALSE。
SELECT * FROM raw_images
WHERE IMAGE_FILE_SIZE_FILTER(img_bytes, 1024, 10 * 1024 * 1024);