我正在处理一些图像。我得到了一张 abc.tif
图片(彩色图片)。我是这样读的:
Mat test_image=imread("abc.tif",IMREAD_UNCHANGED);
我对其执行了一些操作并将其转换为仅包含两个值 0 和 255 的二进制图像(使用阈值),这两个值存储在 img 图像中,其中 img 的创建方式如下:
Mat img(584,565,CV_8UC1); %//(so now img contains only 0 and 255)
我使用 imwrite("myimage.jpg",img);
我想将 myimage.jpg
图像与另一个二进制图像 manual.gif
逐个像素地进行比较,以检查一个图像是否与另一个图像重复,但正如您所注意到的问题是 OpenCv 不支持 .gif 格式,所以我需要将其转换为 .jpg 并且因此图像发生变化,现在两个图像都将得出结论,因为即使它们相同,也可能是不同的图像。现在做什么?
实际上我正在研究视网膜血管分割,这些图像可以在 DRIVE 数据库中找到。
我得到了这些图像。原图:
我对其执行一些操作并从中提取血管,然后创建二进制图像并将其存储在一些 Mat 变量 img 中,如前所述。现在我有另一个图像(.gif 图像),我无法加载,如下所示:
现在我想将我的 img 图像(二进制)与我无法加载的给定 .gif 图像(上方)进行比较。
最佳答案
使用 ImageMagic 以批处理模式将 .gif 转换为 .PNG。您还可以使用 system("convert img.gif img.png")
调用即时转换它。
我不确定像素比较是否会给您带来好的结果。同一图像的偏移偏移将导致不匹配。 编辑作为一个想法。也许计算重心并移动/旋转两个图像以使其具有相同的原点可能会有所帮助。
考虑使用力矩、弗里曼链或其他模式鲁棒形状比较方法。
关于matlab - 逐像素比较图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29770433/