matlab - 逐像素比较图像

标签 matlab opencv

我正在处理一些图像。我得到了一张 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 数据库中找到。

我得到了这些图像。原图:

enter image description here

我对其执行一些操作并从中提取血管,然后创建二进制图像并将其存储在一些 Mat 变量 img 中,如前所述。现在我有另一个图像(.gif 图像),我无法加载,如下所示:

enter image description here

现在我想将我的 img 图像(二进制)与我无法加载的给定 .gif 图像(上方)进行比较。

最佳答案

使用 ImageMagic 以批处理模式将 .gif 转换为 .PNG。您还可以使用 system("convert img.gif img.png") 调用即时转换它。

我不确定像素比较是否会给您带来好的结果。同一图像的偏移偏移将导致不匹配。 编辑作为一个想法。也许计算重心并移动/旋转两个图像以使其具有相同的原点可能会有所帮助。

考虑使用力矩、弗里曼链或其他模式鲁棒形状比较方法。

关于matlab - 逐像素比较图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29770433/

相关文章:

image - 为什么我得到一个空白图像作为我的输出?

image - 在 vl_feat vl_svmtrain 函数中设置成本参数

python - opencv TypeError: 'interpolation'是此函数的无效关键字参数

opencv - Absdiff在灰度而不是BGR色彩空间上工作

matlab - 在 MATLAB 中细化手写字符

matlab - Matlab 中句柄为 0 的对象

matlab - 如何使堆叠条形图仅以白色和黑色可读

python - ROS 图像订阅滞后

python - 在HTML中显示视频队列缓冲区

java - Opencv - 构建 Opencv 失败 (MacOSX)