gpt4 book ai didi

C#结合OpenCVSharp4使用直方图算法比较图片相似度

转载 作者:我是一只小鸟 更新时间:2023-09-09 15:02:02 36 4
gpt4 key购买 nike

C#结合OpenCVSharp4使用直方图算法比较图片相似度

直方图有 灰度直方图 、 颜色直方图 ,如果是灰度图像,那么就用 灰度直方图 ,这里使用 颜色直方图 来计算两个图片的相似度.

这里只记录如何使用,至于算法原理,问就是不会.

直方图算法效率高,但精度不够,适合快速比较,例如 以图搜图 。

1. 下载 OpenCVSharp4

通过NuGet包管理器进行下载。搜索 OpenCVSharp4 下载。可参考前一篇文章: C#结合OpenCVSharp4图片相似度识别 。

2. 使用

                        
                                  /// <summary>
        /// 直方图相关性 
        /// 结果越接近1 则越相似
        /// 图片相似度识别(精度不高,速度较快,可用于以图搜图)
        /// </summary>
        /// <param name="imgFile1"></param>
        /// <param name="imgFile2"></param>
        public double Compare_Hist(string imgFile1, string imgFile2)
        {
            var matA = Cv2.ImRead(imgFile1);
            var matB = Cv2.ImRead(imgFile2);

            // 拆分通道
            Cv2.Split(matA, out Mat[] matA_S);
            Cv2.Split(matB, out Mat[] matB_S);

            //直方图的像素范围   
            Rangef[] histRange = { new Rangef(0, 256) };

            //直方图数组大小
            int[] histSize = { 256 };

            //直方图输出数组
            Mat hist_A = new Mat();
            Mat hist_B = new Mat();

            bool uniform = true, accumulate = false;
            Cv2.CalcHist(matA_S, new int[] { 0, 1, 2 }, null, hist_A, 1, histSize, histRange, uniform, accumulate);
            Cv2.CalcHist(matB_S, new int[] { 0, 1, 2 }, null, hist_B, 1, histSize, histRange, uniform, accumulate);

            //归一化,排除图像分辨率不一致的影响
            Cv2.Normalize(hist_A, hist_A, 0, 1, NormTypes.MinMax, -1, null);
            Cv2.Normalize(hist_B, hist_B, 0, 1, NormTypes.MinMax, -1, null);

            //相关性比较
            var res = Cv2.CompareHist(hist_A, hist_B, HistCompMethods.Correl);
            return res;
        }

                        
                      

比较结果 。

image

image

可以看出基本符合预期.

注意:由于直方图算法未考虑像素的空间位置,所以当图片旋转后,仍会被认为是同一个图 。

下面是将图片旋转后的计算结果,可以看到跟没有旋转时的计算结果一样 。

image

记录完毕~ 。

最后此篇关于C#结合OpenCVSharp4使用直方图算法比较图片相似度的文章就讲到这里了,如果你想了解更多关于C#结合OpenCVSharp4使用直方图算法比较图片相似度的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com