当前位置: 首页 > wzjs >正文

北京企业网站seo杭州seo营销

北京企业网站seo,杭州seo营销,装潢设计费用怎么算,贡井区建设局网站?图片相似度对比方法概述 图片相似度对比是计算机视觉中的一个重要任务,主要用于判断两张图片在内容上的相似程度。以下是几种常见的图片相似度对比方法及其实现思路: 1. 基于像素的直接比较 最直接的方法是逐像素比较两张图片的差异,常用的…

图片相似度对比方法概述

图片相似度对比是计算机视觉中的一个重要任务,主要用于判断两张图片在内容上的相似程度。以下是几种常见的图片相似度对比方法及其实现思路:

1. 基于像素的直接比较

最直接的方法是逐像素比较两张图片的差异,常用的指标有均方误差 (MSE) 和结构相似性指数 (SSIM)。

2. 基于特征提取的方法

使用图像特征描述符 (如 SIFT、SURF 或 ORB) 提取关键点和特征向量,然后比较特征向量的相似度.

3. 基于哈希的方法

通过计算图像的哈希值 (如感知哈希 pHash、平均哈希 aHash 等) 来快速比较图片相似度。

4. 基于深度学习的方法

使用预训练的卷积神经网络 (如 ResNet、VGG 等) 提取图像特征向量,然后计算向量间的余弦相似度。

选择合适的方法

  • 像素方法:简单直接,但对图像变换 (如旋转、缩放) 敏感。
  • 特征方法:对图像变换有较好的鲁棒性,计算量较大。
  • 哈希方法:计算速度快,适合快速筛选,但精度较低。
  • 深度学习方法:精度高,对各种变化都有很好的鲁棒性,但计算资源需求大。

鸿蒙基于Hash值相似性对比

图片压缩
async imageCompressionToSize(pixelMap: image.PixelMap, targetSize: number) {let infor = await pixelMap.getImageInfo()if (infor.size.height > 2000) {pixelMap.scaleSync(0.5, 0.5)}let value = await this.imageCompression(pixelMap, 90)// AmLog.debugOut("imageDataSize:" + value.buffer.byteLength)if (value.buffer.byteLength <= targetSize) {return value} else {while (value.buffer.byteLength/1024 > targetSize && value.quality > 10){try {value = await this.imageCompression(pixelMap, value.quality - 10)}catch (e) {break}}}let uint = new Uint8Array(value.buffer)let str = StrUtil.unit8ArrayToStr(uint)let md5 = await new Md5Util().doMd(str)value.md5 = md5return value}//压缩图片async imageCompression(pixelMap: image.PixelMap,quality:number) : Promise<ImageComValue>{let packOption: image.PackingOption = {format: "image/jpeg",quality: quality}let packer = image.createImagePacker()let buffer = await packer.packToData(pixelMap, packOption)// AmLog.debugOut(quality + "压缩imageDataSize:" + buffer.byteLength)let imageSource = image.createImageSource(buffer)const decodeOptions:image.DecodingOptions = {desiredPixelFormat: image.PixelMapFormat.RGBA_8888}let pixelMap1 = await imageSource.createPixelMap(decodeOptions)packer.release()return {pixMap: pixelMap1,quality,buffer}}
计算哈希值
 async getImageHash(imageSource: image.ImageSource): Promise<string> {let packOption: image.PackingOption = {format: "image/jpeg",quality: 80};const decodeOptions:image.DecodingOptions = {desiredSize: { width: this.imageSizeValue, height: this.imageSizeValue }, // 调整为像素大小desiredPixelFormat: image.PixelMapFormat.RGBA_8888}let pixelMap = await imageSource.createPixelMap(decodeOptions)this.imageSizeValue/imageLength)// 转换为灰度图并计算DCT变换(此处简化处理)// 创建图像打包器实例const imagePackerApi = image.createImagePacker();const pixelBuffer1:ArrayBuffer = await imagePackerApi.packToData(pixelMap,packOption)const pixels :Uint8Array = StrUtil.bufferToUint8Array(pixelBuffer1)//灰度计算let grayValues:number[] = []for (let i = 0; i < this.imageSizeValue * this.imageSizeValue; i++) {const idx = i * 4;if (idx + 2 >= pixels.byteLength) {grayValues.push(0)continue}// 简化的灰度计算grayValues.push( Math.floor((pixels[idx] * 0.299) + (pixels[idx + 1] * 0.587) + (pixels[idx + 2] * 0.114)))}//简化版DCT(离散余弦变换)这里使用简化版DCT实现,实际应用中应使用更高效的算法let dctPixels = this.simpleDCT(grayValues, this.imageSizeValue)// 计算均值const sum = dctPixels.reduce((acc, val,index) => {// 检查是否有NaN值if (isNaN(val)) {// AmLog.debugOut(`发现NaN值在位置:`+ index)return acc}return acc + val;}, 0);const mean = sum / dctPixels.length// 生成哈希值let hash = '';for (let i = 0; i < dctPixels.length; i++) {if (isNaN(dctPixels[i])) {continue}hash += dctPixels[i] >= mean ? '1' : '0';}return hash;}
哈希值对比
//比较图片相似度async compareImagesByHashPath(path1: string, path2: string): Promise<number> {const hash1 = await this.getImageHashByPath(path1);const hash2 = await this.getImageHashByPath(path2);// 计算汉明距离let diff = 0;for (let i = 0; i < hash1.length; i++) {if (hash1[i] !== hash2[i]) diff++;}// 计算相似度(汉明距离越小越相似)return (1 - diff / hash1.length) * 100;}//通过hash值对比图片相似度compareImagesByHash(hash1: string, hash2: string): number {// 计算汉明距离let diff = 0;for (let i = 0; i < hash1.length; i++) {if (hash1[i] === hash2[i]) diff++;}// 计算相似度(汉明距离越小越相似)return diff / hash1.length * 100;}
性能与精度平衡

imageSizeValue的选取

哈希尺寸基础尺寸内存占用计算时间适用场景
8×832×32快速筛选
16×1648×48常规比较
16×6496×96高精度匹配

 

http://www.dtcms.com/wzjs/520701.html

相关文章:

  • 建站助手百度宣传推广费用
  • 好单库如何做网站百度客服在哪里找
  • 网站网站建设网站百度查询关键词排名工具
  • 吉林省建设厅官方网站郑州seo代理商
  • 电商网站建设心得体会永久免费自动建站
  • 哪里有学网页设计做seo需要哪些知识
  • 潍坊建设网站的公司站长工具站长之家官网
  • 网站开发的英文参考文献宁波seo外包推广渠道
  • 洪梅镇做网站百度问答平台入口
  • 阿里云万网建网站网络优化工程师吃香吗
  • 网站界面设计的相关指南投广告哪个平台好
  • 方正悠黑使用网站建设侵权么云南seo
  • 微信公众号网站导航怎么做seo网站设计工具
  • 建设网站会员重庆网站seo多少钱
  • pexels免费素材网站seo优化快速排名
  • 上海做网站的公司是什么全网热搜榜
  • 网站建设游戏公司免费十八种禁用网站
  • 建设网站群的意义竞价防恶意点击
  • 西安网站开发公司北京优化网站推广
  • wordpress架设服务器嘉兴seo网络推广
  • 企业网站模板大全济宁seo优化公司
  • wordpress强制电脑主题seo诊断报告怎么写
  • html网站欣赏谷歌海外推广
  • wordpress 文章不显示seo代理
  • 合肥房产网官网首页关键词排名优化流程
  • 如何利用js来做网站表单近期10大新闻事件
  • 北京做网站需要多少钱关键词分析工具网站
  • 嘉兴网站建设模板网站百度优化seo
  • wordpress 机械主题谷歌关键词优化怎么做
  • 行业网站推广怎么做疫情防控最新政策