图像相似度算法的C#代码

合集下载

图像处理软件算法设计挑战考试

图像处理软件算法设计挑战考试

图像处理软件算法设计挑战考试(答案见尾页)一、选择题1. 图像处理软件中,以下哪个工具可以用来调整图像的亮度、对比度和饱和度?A. 色彩平衡B. 图像旋转C. 锐化工具D. 滤镜2. 在图像处理软件中,为了减少噪点,应该选择哪种处理方法?A. 平滑滤镜B. 高斯滤波器C. 中值滤波器D. 均值滤波器3. 在图像处理软件中,以下哪个功能可以用来分割图像?A. 裁剪工具B. 魔棒工具C. 套索工具D. 钢笔工具4. 在图像处理软件中,为了增加图像的视觉冲击力,应该使用哪种滤镜?A. 柔光滤镜B. 光泽滤镜C. 马赛克滤镜D. 波纹滤镜5. 在图像处理软件中,以下哪个工具可以用来修复图像中的破损?A. 仿制图章工具B. 历史记录画笔工具C. 橡皮擦工具D. 魔术棒工具6. 在图像处理软件中,为了调整图像的色彩平衡,应该使用哪种工具?A. 色彩平衡B. 色相/饱和度C. 分析工具D. 直方图7. 在图像处理软件中,以下哪个功能可以用来锐化图像?A. 液化工具B. 锐化工具C. 噪点减少工具D. 高斯模糊8. 在图像处理软件中,为了改变图像的大小和比例,应该使用哪种工具?A. 裁剪工具B. 移动工具C. 缩放工具D. 透视工具9. 在图像处理软件中,以下哪个功能可以用来创建特殊效果?A. 色彩平衡B. 图层样式C. 克隆工具D. 风格化工具10. 在图像处理软件中,为了调整图像的局部对比度,应该使用哪种工具?A. 色相/饱和度B. 区域曝光工具C. 局部调整工具D. 面板工具11. 图像处理软件的主要功能是什么?B. 图像分割C. 特征提取D. 图像融合12. 在图像处理中,哪个操作可以增强图像中的边缘信息?A. 滤波B. 深度学习C. 核心转换D. 图像平滑13. 下列哪种方法可以用来测量图像中物体的尺寸?A. 边缘检测B. 图像金字塔C. 区域生长D. 直方图比较14. 在图像处理软件中,哪个功能可以用于去除图像中的噪声?A. 滤波B. 深度学习C. 高斯模糊D. 锐化15. 图像处理中,哪个技术可以用于分离图像中的不同颜色通道?A. 色彩空间转换B. 图像变换C. 图像滤波D. 图像编码16. 在图像处理软件中,哪个功能可以用于测量图像的相似度?A. 图像配准B. 图像分割C. 特征匹配17. 下列哪种算法可以用于图像的自动特征提取?A. K-均值聚类B. 局部敏感哈希C. 神经网络D. 高斯过程18. 图像处理软件中,哪个功能可以用于图像的编辑和处理?A. 图像缩放B. 图像旋转C. 图像扭曲D. 图像平移19. 在图像处理中,哪个技术可以用于图像的立体视觉重建?A. 图像匹配B. 图像分割C. 三维重建算法D. 图像融合20. 图像处理软件中,哪个功能可以用于图像的压缩和解压缩?A. JPEG压缩B. 霍夫曼编码C. LZW编码D. 运行长度编码21. 在图像处理软件中,哪种算法可以用于去除图像中的噪声?A. 边缘检测算法B. 池化算法C. 高斯滤波算法D. 中值滤波算法22. 在图像锐化过程中,哪种算法可以提高图像边缘的清晰度?A. 径向基函数(RBF)B. 高斯函数C. 梯度下降法D. 卷积运算23. 在图像分割中,哪种算法可以将图像中的目标区域与背景区分开?A. K-means聚类算法B. 图像分割阈值法C. 图像形态学操作D. 基于深度学习的图像分割方法24. 在图像处理软件中,哪种算法可以用于图像的缩放和旋转?A. 变换模块B. 特征提取模块C. 模式识别模块D. 机器学习模块25. 在图像处理软件中,哪种算法可以用于图像的增强和调整?A. 图像平滑算法B. 图像锐化算法C. 图像变换算法D. 图像编码和解码算法26. 在图像处理软件中,哪种算法可以用于图像的纹理分析和识别?A. 图像分割算法B. 图像特征提取算法C. 图像分类算法D. 图像聚类算法27. 在图像处理软件中,哪种算法可以用于图像的压缩和编码?A. JPEG压缩算法B. MPEG压缩算法C. H.264/AVC压缩算法D. 图像编码和解码算法28. 在图像处理软件中,哪种算法可以用于图像的多尺度分析?A. 图像傅里叶变换B. 图像小波变换C. 图像形态学分析D. 图像分形维数计算29. 在图像处理软件中,哪种算法可以用于图像的时域分析?A. 图像频谱分析B. 图像时域分析C. 图像时频分析D. 图像统计分析30. 在图像处理软件中,哪种算法可以用于图像的深度学习特征提取?A. 卷积神经网络(CNN)B. 循环神经网络(RNN)C. 长短期记忆网络(LSTM)D. 自编码器(Autoencoder)31. 图像处理软件的主要功能包括哪些?A. 图像增强B. 图像分割C. 特征提取D. 图像识别E. 图像压缩32. 在进行图像处理时,如何选择合适的图像格式?A. 根据文件大小选择B. 根据颜色深度选择C. 根据图像类型选择D. 根据应用场景选择33. 以下哪种图像处理技术可以用于去除图像中的噪声?A. 图像平滑滤波B. 图像锐化滤波C. 图像混合滤波D. 图像形态学滤波34. 在图像识别中,以下哪种算法常用于物体检测?A. SIFT(尺度不变特征变换)B. SURF(加速稳健特征)C. ORB(Oriented FAST and Rotated BRIEF)D. CNN(卷积神经网络)35. 对于图像压缩,以下哪种方法通常不基于像素值的变化?A. 霍夫曼编码B. LZW(Lempel-Ziv-Welch)C. JPEG(Joint Photographic Experts Group)D. DYNA-Q(动态图像专家组)36. 在图像处理软件中,如何调整图像的对比度和亮度?A. 使用直方图均衡化B. 使用梯度运算C. 使用曝光度调整D. 使用色彩平衡调整37. 在特征提取中,以下哪种方法不是基于图像纹理的?A. Gabor滤波B. 波峰法C. Hessian矩阵D. 局部二值模式38. 在图像分割中,以下哪种方法常用于医学图像处理?A. K-means聚类B. 图像阈值分割C. 基于形状的分割D. 基于深度学习的分割39. 在图像处理软件中,如何实现图像的旋转和翻转?A. 使用旋转矩阵B. 使用翻转函数C. 使用仿射变换D. 使用极坐标变换40. 在图像识别中,以下哪种算法可以用于分类和识别不同类型的图像?A. SIFT(尺度不变特征变换)B. SURF(加速稳健特征)C. VGG(Visual Geometry Group)D. ResNet(残差网络)二、问答题1. 请简述图像处理软件的主要功能。

模糊C均值聚类算法实现与应用

模糊C均值聚类算法实现与应用

模糊C均值聚类算法实现与应用聚类算法是一种无监督学习方法,在数据挖掘、图像处理、自然语言处理等领域得到广泛应用。

C均值聚类算法是聚类算法中的一种经典方法,它将数据对象划分为若干个不相交的类,使得同一类中的对象相似度较高,不同类之间的对象相似度较低。

模糊C均值聚类算法是对C均值聚类的扩展,它不是将每个数据对象划分到唯一的类别中,而是给每个对象分配一个隶属度,表示该对象属于不同类的可能性大小。

本文主要介绍模糊C均值聚类算法的实现方法和应用。

一、模糊C均值聚类算法实现方法模糊C均值聚类算法可以分为以下几个步骤:1. 确定聚类数k与参数m聚类数k表示将数据分成的类别数目,参数m表示隶属度的度量。

一般地,k和m都需要手动设定。

2. 随机初始化隶属度矩阵U随机初始化一个k×n的隶属度矩阵U,其中n是数据对象数目,U[i][j]表示第j个对象隶属于第i个类别的程度。

3. 计算聚类中心计算每个类别的聚类中心,即u[i] = (Σ (u[i][j]^m)*x[j]) / Σ(u[i][j]^m),其中x[j]表示第j个对象的属性向量。

4. 更新隶属度对于每个对象,重新计算它对每个类别的隶属度,即u[i][j] = 1 / Σ (d(x[j],u[i])/d(x[j],u[k])^(2/(m-1))),其中d(x[j],u[i])表示第j个对象与第i个聚类中心的距离,k表示其他聚类中心。

5. 重复步骤3和4重复执行步骤3和4,直到满足停止条件,例如聚类中心不再变化或者隶属度矩阵的变化趋于稳定。

二、模糊C均值聚类算法应用模糊C均值聚类算法可以应用于多个领域,包括图像处理、文本挖掘、医学图像分析等。

下面以图像分割为例,介绍模糊C均值聚类算法的应用。

图像分割是图像处理中的一个重要应用,旨在将一幅图像分割成多个区域,使得同一区域内的像素具有相似度较高,不同区域之间的像素相似度较低。

常见的图像分割算法包括全局阈值法、区域生长法、边缘检测法等。

机器人视觉系统与图像处理考核试卷

机器人视觉系统与图像处理考核试卷
A.图像增强
B.图像锐化
C.图像分割
D.直方图均衡化
E.特征提取
2.下列哪些方法可以用于图像降噪?()
A.中值滤波
B.高斯滤波
C.频域滤波
D.梯度滤波
E.索贝尔算子
3.以下哪些是常见的图像特征提取算法?()
A. SIFT
B. SURF
C. HOG
D. PCA
E. FFT
4.关于图像的特征匹配,以下哪些说法是正确的?()
机器人视觉系统与图像处理考核试卷
考生姓名:__________答题日期:_______得分:_________判卷人:_________
一、单项选择题(本题共20小题,每小题1分,共20分,在每小题给出的四个选项中,只有一项是符合题目要求的)
1.下列哪种技术在机器人视觉系统中主要用于图像边缘检测?()
20.关于图像的纹理分析,以下哪个描述是正确的?()
A.纹理是一种全局特征
B.纹理分析通常不用于图像分类
C.纹理描述符包括灰度共生矩阵和局部二值模式
D.纹理与图像的亮度变化无关
二、多选题(本题共20小题,每小题1.5分,共30分,在每小题给出的四个选项中,至少有一项是符合题目要求的)
1.以下哪些技术属于图像预处理步骤?()
D. GIF
10.关于图像金字塔,以下哪个描述是错误的?()
A.它用于图像的多尺度表示
B.金字塔的每一层图像都是前一层图像的放大版本
C.它包括高斯金字塔和拉普拉斯金字塔
D.它主要用于图像分割
11.在计算机视觉中,下列哪种技术用于识别图像中的对象?()
A.光流
B.特征提取
C.图像滤波
D.图像压缩
12.关于SIFT算法,以下哪个描述是正确的?()

orb算法c语言

orb算法c语言

orb算法c语言ORB算法是一种计算机视觉中常用的特征点描述子提取算法,它可以在图像中提取出关键点,并将这些关键点转化为具有独特性质的描述子,以便于后续的图像匹配、物体识别等应用。

本文将介绍ORB算法的原理、步骤以及用C语言实现ORB算法的方法。

一、ORB算法原理ORB(Oriented FAST and Rotated BRIEF)算法是FAST角点检测和BRIEF描述子相结合的产物。

它首先使用FAST角点检测器在图像中检测出一些关键点,然后对这些关键点进行方向赋值,最后使用BRIEF描述子对这些关键点进行描述。

FAST角点检测器是一种非常快速的角点检测器,它可以在图像中快速地找到一些具有明显边缘变化的像素点,并将其作为关键点输出。

但是,FAST角点检测器并不会对这些关键点进行方向赋值,因此需要使用其他方法来确定每个关键点的方向。

ORB算法采用了一种叫做“图像金字塔”的技术来确定每个关键点的方向。

图像金字塔是指将原始图像不断缩小得到一系列尺度不同的图像,这样可以在不同的尺度上对图像进行处理,从而提高算法的鲁棒性。

ORB算法在每个尺度上使用SIFT算法来计算梯度方向直方图,并选取梯度方向直方图中最大的那个方向作为该关键点的方向。

BRIEF描述子是一种二进制描述子,它可以将关键点周围的像素点转化为一个固定长度的二进制串,这个串可以用来表示该关键点的特征。

BRIEF描述子非常快速,但是它对噪声和旋转等因素非常敏感。

为了提高BRIEF描述子的鲁棒性,ORB算法采用了一种叫做“旋转BRIEF”的方法。

这种方法可以将BRIEF描述子旋转到与关键点方向一致的位置上,从而提高描述子的鲁棒性。

二、ORB算法步骤ORB算法可以分为以下几个步骤:1. 图像金字塔构建:将原始图像不断缩小得到一系列尺度不同的图像。

2. FAST角点检测:在每个尺度上使用FAST角点检测器来检测出一些具有明显边缘变化的像素点,并将其作为关键点输出。

d i s t a n c e 算 法 小 结

d i s t a n c e 算 法 小 结

18种和“距离(distance)”、“相似度(similarity)”相关的量的小结在计算机人工智能领域,距离(distance)、相似度(similarity)是经常出现的基本概念,它们在自然语言处理、计算机视觉等子领域有重要的应用,而这些概念又大多源于数学领域的度量(metric)、测度(measure)等概念。

?这里拮取其中18种做下小结备忘,也借机熟悉markdown的数学公式语法。

常见的距离算法和相似度(相关系数)计算方法1.常见的距离算法1.1欧几里得距离(Euclidean?Distance)以及欧式距离的标准化(Standardized Euclidean distance)1.2马哈拉诺比斯距离(Mahalanobis?Distance)1.3曼哈顿距离(Manhattan?Distance)1.4切比雪夫距离(Chebyshev?Distance)1.5明可夫斯基距离(Minkowski?Distance)1.6海明距离(Hamming distance)2.常见的相似度(系数)算法2.1余弦相似度(Cosine?Similarity)以及调整余弦相似度(Adjusted?Cosine?Similarity)2.2皮尔森相关系数(Pearson?Correlation?Coefficient)2.3Jaccard相似系数(Jaccard?Coefficient)2.4Tanimoto系数(广义Jaccard相似系数)2.5对数似然相似度-对数似然相似率2.6互信息-信息增益,相对熵-KL散度2.7信息检索--词频-逆文档频率(TF-IDF)2.8词对相似度--点间互信息3.距离算法与相似度算法的选择(对比)1.常见的距离算法1.1欧几里得距离(Euclidean?Distance)公式:标准欧氏距离的思路:现将各个维度的数据进行标准化:标准化后的值?=?(?标准化前的值?-?分量的均值?)?-分量的标准差,然后计算欧式距离欧式距离的标准化(Standardized Euclidean distance)公式:1.2马哈拉诺比斯距离(Mahalanobis?Distance)公式:关系:若协方差矩阵是对角矩阵,公式变成了标准化欧氏距离;如果去掉马氏距离中的协方差矩阵,就退化为欧氏距离。

计算机视觉试题及答案

计算机视觉试题及答案

计算机视觉试题及答案
选择题
在计算机视觉中,用于描述图像中像素点亮度变化的是?
A.梯度(正确答案)
B.直方图
C.特征点
D.边缘
下列哪种技术常用于图像分割,将图像划分为多个区域?
A.滤波
B.阈值分割(正确答案)
C.边缘检测
D.特征匹配
在计算机视觉中,用于描述图像局部特征,常用于物体识别和匹配的是?
A.SIFT特征(正确答案)
B.直方图均衡化
C.图像金字塔
D.形态学操作
下列哪个不是计算机视觉中的常见任务?
A.图像分类
B.目标检测
C.图像压缩(正确答案)
D.姿态估计
在进行图像匹配时,常用于比较两个图像之间相似度的是?
A.模板匹配
B.特征点匹配(正确答案)
C.图像增强
D.图像复原
在计算机视觉中,用于从图像中提取出感兴趣区域(ROI)的技术是?
A.区域生长
B.图像分割(正确答案)
C.边缘检测
D.形态学滤波
下列哪种算法常用于图像去噪,通过滤除高频噪声来平滑图像?
A.高斯滤波(正确答案)
B.边缘检测
C.阈值分割
D.特征提取
在计算机视觉中,用于描述图像全局特征,常用于图像检索和分类的是?
A.边缘特征
B.纹理特征
C.直方图特征(正确答案)
D.关键点特征
下列哪个不是计算机视觉在自动驾驶中的常见应用?
A.障碍物检测
B.车道线识别
C.天气预报(正确答案)
D.行人检测。

利用计算机视觉进行图像搜索与相似度匹配的实践方法

利用计算机视觉进行图像搜索与相似度匹配的实践方法

利用计算机视觉进行图像搜索与相似度匹配的实践方法随着计算机视觉技术的飞速发展,图像搜索和相似度匹配在各个领域得到了广泛应用。

利用计算机视觉进行图像搜索和相似度匹配可以帮助人们更快速、准确地找到自己感兴趣的图像,并且对于商业领域的产品推荐、版权保护等方面也具有重要意义。

本文将介绍利用计算机视觉进行图像搜索与相似度匹配的实践方法。

首先,图像搜索是指根据用户输入的关键词,在大规模的图像数据库中找到与关键词相关的图像。

图像搜索可以分为基于文本的搜索和基于图像内容的搜索两种方式。

基于文本的搜索方法是通过将图像与关键词相关的文本信息进行关联,从而实现图像搜索。

一种常见的方法是利用图像的标签信息,并通过词袋模型将关键词与图像进行匹配。

这种方法的优点是实现简单,但也存在标签质量不高、语义不明确等问题。

而基于图像内容的搜索方法则是通过分析图像的视觉特征,从而实现对图像的搜索。

图像的视觉特征包括颜色、纹理、形状、边缘等信息。

常用的方法有颜色直方图、SIFT特征、SURF特征等。

这些特征可以用来度量图像之间的相似度,从而实现图像搜索和相似度匹配。

接下来,相似度匹配是指在给定一个查询图像的情况下,在图像数据库中找到与查询图像最相似的图像。

相似度匹配的目标是找到与查询图像在内容和结构上最类似的图像。

常用的相似度匹配方法有两种:基于特征的方法和基于深度学习的方法。

基于特征的方法利用图像的局部特征描述符进行相似度度量,如SIFT特征、SURF特征等。

通过计算两个图像之间的特征相似度,我们可以得到它们的相似程度。

而基于深度学习的方法则是利用卷积神经网络(CNN)等深度学习模型将图像映射到特征空间中,通过计算特征空间中图像之间的距离来度量相似程度。

深度学习方法具有更强的表达能力和更准确的匹配效果,但需要更大量的数据和更高的计算资源支持。

在实践中,我们可以利用开源的计算机视觉工具和库来实现图像搜索和相似度匹配。

例如,OpenCV是一个广泛使用的计算机视觉库,提供了丰富的图像处理和特征提取方法。

基于模糊C均值聚类算法的图像分割研究

基于模糊C均值聚类算法的图像分割研究

基于模糊C均值聚类算法的图像分割研究随着科学技术的迅速发展,图像处理和分析技术在各个领域得到了广泛应用。

图像分割作为图像处理中的重要环节,对于提取图像中的对象、边缘、轮廓等特征起着至关重要的作用,成为图像处理和分析领域的热点问题。

本文将介绍一种基于模糊C均值聚类算法的图像分割方法,该方法在图像处理和分析领域的应用具有广泛的前景。

一、图像分割技术基本原理图像分割是将图像中的像素划分成若干个具有独立形态、颜色、纹理等特征的区域,也就是到达一个将图像语义上的像素类别转化为离散数值上的过程。

图像分割技术主要分为基于阈值、区域生长、边缘检测、基于特征的方法和聚类分析等。

其中,聚类分析是一种重要的无监督图像分割方法,其基本思想是根据像素之间的相似度将所有图像像素划分为若干个聚类。

聚类分析中常用的聚类算法包括K均值聚类、模糊C均值聚类等,而模糊C均值聚类算法是一种比较常用且有效的聚类算法。

二、模糊C均值聚类算法基本原理模糊C均值聚类算法是一种基于多元统计分析、模糊集合理论和聚类分析的无监督聚类算法。

该算法可以克服K均值聚类算法对噪声和异常值的敏感性,得到更为准确的聚类结果。

具体地说,模糊C均值聚类算法的基本思路是将每个像素作为一个数据点,将图像中所有像素点分成K个类,每个像素点属于某一类的概率是模糊的。

模糊C均值聚类算法的目标是最小化聚类误差平方和,即最小化如下式子:其中,m是模糊度系数,用于描述每个像素点属于某一类别的程度。

当m趋近于1时,模糊C均值聚类算法退化为K均值聚类算法;而当m趋近于无穷大时,模糊C均值聚类算法收敛于直方图均衡化操作。

基于此,模糊C均值聚类算法通过不断迭代优化模糊度系数和聚类中心,直到达到用户指定的收敛条件为止。

三、基于模糊C均值聚类算法的图像分割方法基于模糊C均值聚类算法的图像分割方法可以分为以下步骤:(1)图像预处理:对图像进行去噪、灰度化等预处理,提高图像的质量和稳定性。

(2)像素聚类:将图像中的像素点作为数据点,采用模糊C均值聚类算法将所有像素点分成K个类别。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

近日逛博客的时候偶然发现了一个有关图片相似度的Python算法实现。

想着很有意思便搬到C#上来了,给大家看看。

闲言碎语
才疏学浅,只把计算图像相似度的一个基本算法的基本实现方式给罗列了出来,以至于在最后自己测评的时候也大发感慨,这个算法有点不靠谱。

不管怎么样,这个算法有时候还是有用的,所以还是列出来跟大家伙一起分享分享~~
PS:图像处理这一块博大精深,个人偶尔发现了点东西拿来分享。

说的不好的地方,写得太糟的地方,诸位准备扔砖头还望淡定,淡定~~
基本知识介绍
颜色直方图
颜色直方图是在许多图像检索系统中被广泛采用的颜色特征,它所描述的是不同色彩在整幅图像中所占的比例,而并不关心每种色彩所处的空间位置,即无法描述图像中的对象或物体。

颜色直方图特别适用于描述那些难以进行自动分割的图像。

灰度直方图
灰度直方图是灰度级的函数,它表示图像中具有每种灰度级的像素的个数,反映图像中每种灰度出现的频率。

灰度直方图的横坐标是灰度级,纵坐标是该灰度级出现的频率,是图像的最基本的统计特征。

本文中即是使用灰度直方图来计算图片相似度,关于算法那一块也不赘言了,毕竟图像学图形学,直方图我是门儿都不懂,我也不准备打肿脸充胖子,只想实现一个最基本的算法,然后从最直观的角度看看这个算法的有效性,仅此而已。

算法实现
诸位看官休怪笔者囫囵吞枣,浅尝辄止的学习态度。

额毕竟是因兴趣而来,于此方面并无半点基础(当然,除了知道RGB是啥玩意儿——这还幸亏当年计算机图形学的老师是个Super美女,因此多上了几节课的缘故),更谈不上半点造诣,看官莫怪莫怪,且忍住怒气,是走是留,小生不敢有半点阻拦~~
大致步骤如下:
1,将图像转换成相同大小,以有利于计算出相像的直方图来
2,计算转化后的灰度直方图
3,利用XX公式,得到直方图相似度的定量度量
4,输出这些不知道有用没用的相似度结果数据
代码实现
步骤1,将图像转化成相同大小,我们暂且转化成256 X 256吧。

public Bitmap Resize(string imageFile, string newImageFile)
{
img = Image.FromFile(imageFile);
Bitmap imgOutput = new Bitmap(img, 256, 256);
imgOutput.Save(newImageFile, System.Drawing.Imaging.ImageFormat.Jpeg);
imgOutput.Dispose();
return (Bitmap)Image.FromFile(newImageFile);
}
这部分代码很好懂,imageFile为原始图片的完整路径,newImageFile为强转大小后的256 X 256图片的路径,为了“赛”后可以看到我们转化出来的图片长啥样,所以我就把它保存到了本地了,以至于有了上面略显丑陋的代码。

步骤2,计算图像的直方图
public int[] GetHisogram(Bitmap img)
{
BitmapData data = img.LockBits( new System.Drawing.Rectangle( 0 , 0 , img.Width , img.Height ), ImageLockMode.ReadWrite , PixelFormat.Format24bppRgb );
int[ ] histogram = new int[ 256 ];
unsafe
{
byte* ptr = ( byte* )data.Scan0;
int remain = data.Stride - data.Width * 3;
for( int i = 0 ; i < histogram.Length ; i ++ )
histogram[ i ] = 0;
for( int i = 0 ; i < data.Height ; i ++ )
{
for( int j = 0 ; j < data.Width ; j ++ )
{
int mean = ptr[ 0 ] + ptr[ 1 ] + ptr[ 2 ];
mean /= 3;
histogram[ mean ] ++;
ptr += 3;
}
ptr += remain;
}
}
img.UnlockBits( data );
return histogram;
}
这段就是惊天地泣鬼神的灰度直方图计算方法,里面的弯弯绕还是留给诸位自己去掺和。

步骤3,计算直方图相似度度量
这一步骤的法宝在于这个:
Sim(G,S)= 其中G,S为直方图,N 为颜色空间样点数
为了大家少敲两行字儿,也给出一堆乱七八糟的代码:
//计算相减后的绝对值
private float GetAbs(int firstNum, int secondNum)
{
float abs = Math.Abs((float)firstNum - (float)secondNum);
float result = Math.Max(firstNum, secondNum);
if (result == 0)
result = 1;
return abs / result;
}
//最终计算结果
public float GetResult(int[] firstNum, int[] scondNum)
{
if (firstNum.Length != scondNum.Length)
{
return 0;
}
else
{
float result = 0;
int j = firstNum.Length;
经过我略显玩世不恭的测评活动,说实话,我对这个算法是相当的失望,尤其是最后一次对比中的结果,目前情绪低落中。

这倒不是说这算法的一无是处,应该是我或者某些前辈用错了地方,个人觉得算法使用的局限性太大,也或许是我的期望值太高了吧。

后记
开始看到这玩意儿的时候觉得这玩意儿很简单啊,可是一想不对劲,没有这么容易的事情,要不Google,MS这些大牛们做了这么久还没有像样的玩意儿出来。

果不其然,为了多了解一点相关的内容,我不得不Google了一下,觉得那些术语完全不知所云,看不懂啊;看来我得祭出我一般不使用的大杀器了——百度一搜。

嘿,还真找出来了一堆东西,比Google上面的看起来容易多了,可是打开链接进去瞅瞅,发现还是非我当前能力之所及。

没学到东西,但是好歹还是了解了一点皮毛上的皮毛。

全文完
诸位看官若觉得讲得没有意义,浪费了你的时间,那就权当作冷笑话听听缓解一下紧张的神经~~。

相关文档
最新文档