Skip to main content

What is it

imagetk是一个图像分析的Python包,用以进行图像处理、特征提取、边缘检测等。

imagetk is a Python package providing image process, feature extraction, and edge detection.

Where to get it

最新版本的源码和编译安装包可以在Python package index获取。

The source code and binary installers for the latest released version are available at the [Python package index].

https://pypi.org/project/imagetk

可以用pip安装imagetk。

You can install protege like this:

pip install imagetk

也可以用setup.py安装。

Or in the protege directory, execute:

python setup.py install

How to use it

特征提取

brisque

from imagetk import feature
import numpy
from PIL import Image

image=Image.open("test.png")#图片读取
image = image.convert('L')#转换为灰度图
image=numpy.array(image)#转换为numpy.array
brisque_feature=feature.brisque(image)#brique特征计算

mean_grad

image=Image.open("test.png")#图片读取
image = image.convert('L')#转换为灰度图
image=numpy.array(image)#转换为numpy.array
mean_grad=feature.mean_grad(image)#mean_grad计算

gray_quantile_expose

image=Image.open("test.png")#图片读取
image = image.convert('L')#转换为灰度图
image=numpy.array(image)#转换为numpy.array
bright,dark=feature.gray_quantile_expose(image,q=0.75,pix=(96,192))#gray_quantile_expose计算

block_value_expose

image=Image.open("test.png")#图片读取
image=numpy.array(image)#转换为numpy.array
bright,dark=feature.block_value_expose(array,stride=8,channel_first=False)

cumprob

image=Image.open("test.png")#图片读取
image = image.convert('L')#转换为灰度图
image=numpy.array(image)#转换为numpy.array
cumprob=feature.cumprob(image)

边缘检测

sobel

image=Image.open("test.png")#图片读取
image = image.convert('L')#转换为灰度图
image=numpy.array(image)#转换为numpy.array
edges=edge.sobel(image)

canny

image=Image.open("test.png")#图片读取
image = image.convert('L')#转换为灰度图
image=numpy.array(image)#转换为numpy.array
edges=edge.canny(image,kernel_size=3,sigma=1)

houghline

from imagetk import threshold

image=Image.open("test.png")#图片读取
image = image.convert('L')#转换为灰度图
image=numpy.array(image)#转换为numpy.array
# 二值化处理
thres=threshold.otsu(image)
image[image>thres]=255
image[image<=thres]=0
# 边缘检测
edge_image=edge.canny(image).astype(numpy.uint8)
# houghline 检测
lines=edge.houghlines(edge_image, rho=1, theta=numpy.pi/180, threshold=100)

图像查重 dedup

图像查重去重模块,包括基于图像感知相似度算法的查重去重。

imagetk.dedup.Hash(hash_func:Callable=hash.percept,dist_func:Callable=distance.hamming,process_func:Callable=None,
			            threshold:int=10,scale:Tuple[int,int]=None,hash_size:int=64,hash_hex:bool=False,
			            errors:Literal['ignore','raise','coerce']='raise',
			            suffix:Union[str,List[str]]=['JPEG', 'PNG', 'BMP', 'MPO', 'PPM', 'TIFF', 'GIF', 'WEBP', 'JPG'],
			            n_worker:int=cpu_count())

Parameters

  • hash_func : Callable, optional hash函数. The default is hash.percept.
  • dist_func : Callable, optional 距离度量函数. The default is distance.hamming.
  • process_func : Callable, optional 图像预处理函数,如果为空,采用self.process. The default is None.
  • threshold : int, optional 图像重复的判断阈值,根据dist_func计算距离,若距离小于threshold,判断为重复图像. The default is 10.
  • scale : Tuple[int,int], optional self.process中对图像进行缩放的参数. The default is None.
  • hash_size : int, optional hash值长度. The default is 64.
  • hash_hex : bool, optional hash_func是否转成16进制,转成16进制可以节省存储空间. The default is False.
  • errors : str, optional 图像加载/查重错误时的处理方式,可选值为['ignore','raise','coerce'],'ignore'忽略文件,'raise'抛出异常,'coerce'强制转成空图像,. The default is 'raise'.
  • suffix : str or list, optional 可以处理的图像文件后缀名, 不区分大小写. The default is ['JPEG', 'PNG', 'BMP', 'MPO', 'PPM', 'TIFF', 'GIF', 'WEBP', 'JPG'].
  • n_worker : int, optional 并行处理进程数. The default is cpu_count().

Returns

None

Algorithms

图像感知相似度算法的原理参见:python计算图像感知相似度(PHash Sim)实例

基础用法

dedup.Hash针对文件、文件夹、压缩包分别提供了两种查重方法:

操作对象 查找与指定图像相似的图像 在指定范围内查找相似的图像
文件列表 find_dup_from_files(file,files) find_dup_in_files(files,score:Dict=None)
文件夹 find_dup_from_folder(file,path:str) find_dup_in_folder(path:str,score:Dict=None)
压缩包 find_dup_from_archive(file,path,mode='zipfile') find_dup_in_archive(path,score=None,mode='zipfile')
  • file: 指定图像的路径
  • files: 待查重文件路径列表
  • path: 待查重的文件夹/压缩包路径
  • score: 图像评分,类型为字典,如果提供了score,将按照score从大到小开始查重,如果某个图像与score较大的图像相似,将不再计算其它图像是否与该图像相似。
  • mode: 压缩包格式,支持zipfile和tarfile

Examples

import os
import numpy
from imagetk import dedup
data_path=os.path.join(os.path.dirname(dedup.__file__),'../test/data')

if __name__=='__main__':
    images=[os.path.join(data_path,i) for i in os.listdir(data_path) if i.endswith('.bmp') or i.endswith('.png') or i.endswith('.JPEG') or i.endswith('.jpg')]
    ref_image=data_path+'/I10.BMP'

    dedup_task=dedup.Hash()

    #find_dup_from_files
    dedup_task.find_dup_from_files(file=ref_image,files=images)
	#find_dup_in_files
    dedup_task.find_dup_in_files(files=images)
	#find_dup_in_files score
    score={i:numpy.random.randint(0,10) for i in images}
    dedup_task.find_dup_in_files(files=images,score=score)

	#find_dup_from_folder
    dedup_task.find_dup_from_folder(file=ref_image,path=data_path)
	#find_dup_in_folder
    dedup_task.find_dup_in_folder(path=data_path)

	#find_dup_from_archive zipfile
    dedup_task.find_dup_from_archive(file=data_path+'/ILSVRC2012_val_00020553.JPEG',path=data_path+'/imagewoof_train.zip',mode='zipfile')
	#find_dup_from_archive tarfile
    dedup_task.find_dup_from_archive(file=data_path+'/ILSVRC2012_val_00010420.JPEG',path=data_path+'/imagewoof_val.tar.gz',mode='tarfile')
	#find_dup_in_archive tarfile
    dedup_task.find_dup_in_archive(path=data_path+'/imagewoof_val.tar.gz',mode='tarfile')

高级用法

文件编码

操作对象 编码
文件 encode(image:numpy.ndarray)
文件列表 encode_files(files:List)
文件夹 encode_folder(path)
压缩包 encode_archive(path,mode='zipfile')

对编码后的文件进行查重

操作对象 查找与指定图像相似的图像 在指定范围内查找相似的图像
编码字典 find_dup_from_map(encode,encode_map:Dict=None) find_dup_in_map(encode_map:Dict,score:Dict=None)

Examples

import os
import numpy
from imagetk import dedup
data_path=os.path.join(os.path.dirname(dedup.__file__),'../test/data')

if __name__=='__main__':
    images=[os.path.join(data_path,i) for i in os.listdir(data_path) if i.endswith('.bmp') or i.endswith('.png') or i.endswith('.JPEG') or i.endswith('.jpg')]
    ref_image=data_path+'/I10.BMP'

    dedup_task=dedup.Hash()

    #encode file
    encode=dedup_task.encode_file(ref_image)
    #encode files
    encode_map=dedup_task.encode_files(images)
    #encode folder
    dedup_task.encode_folder(data_path)
    #encoder archive
    dedup_task.encode_archive(data_path+'/imagewoof_train.zip',mode='zipfile')

    #find_dup_from_map
    dedup_task.find_dup_from_map(encode,encode_map)
    #find_dup_in_map
    dedup_task.find_dup_in_map(encode_map)

项目地址:https://github.com/idealo/imagededup

Metadata

Release files for imagetk 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for imagetk 0.1.3
File Size Uploaded Provenance
imagetk-0.1.3.tar.gz 434.9 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for imagetk 0.1.3
File Interpreter ABI Platform
imagetk-0.1.3-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details

Total release size: 805.1 kB

Release files / imagetk-0.1.3.tar.gz

Download URL imagetk-0.1.3.tar.gz
Size 434.9 kB
Tags Source
SHA-256 checksum
How to use checksums
aaa54191fa366ef3453bb45588c3675f155538cdf5f06c1de93d9dd2f3c5c01e
BLAKE2b-256 checksum
How to use checksums
b6d4f5b1112dc9f71c7347993a8b1cfd14ec1f337251d53cd0ccc857a69658a2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.12.0

Release files / imagetk-0.1.3-cp312-cp312-win_amd64.whl

Download URL imagetk-0.1.3-cp312-cp312-win_amd64.whl
Size 370.2 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
f56442d38dcd9c294c3bbbe12f97b38e4eaf67656ec227bc5afb576d5afe7d42
BLAKE2b-256 checksum
How to use checksums
82766468a236aa2cd3b148ebb99cf927de7c88a45d5bf879a57f750809cae603
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.12.0

Security for imagetk 0.1.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page