Matlab中的图像模式/纹理匹配

时间:2015-04-24 10:39:44

标签: matlab image-processing computer-vision pattern-matching

我正在尝试匹配具有相同图案/纹理但强度不同的两个图像,如下所示  enter image description here

我已经尝试计算两个图像的渐变幅度和方向的差异并对其进行阈值处理。输出很差,如下所示。这两个图像具有相同的纹理,我想将它们检测为相同。有一个更好的方法吗?我期待输出几乎全黑。

enter image description here

代码:

[Gx,Gy] = imgradientxy(rgb2gray(I3),'sobel');
[mag, dir] = imgradient(Gx, Gy);
[Gx1,Gy1] = imgradientxy(rgb2gray(I2),'sobel');
[mag1, dir1] = imgradient(Gx1, Gy1);
imshow(abs(mag-mag1)>35,[]);

1 个答案:

答案 0 :(得分:1)

尝试不同的颜色平面,如HSV或YCbCr。由于您的图像显示强度变化,请使用HSV。当我考虑YCbCr颜色空间中的y平面时,我拍摄了两张图像,结果如下所示。

I = imread('1.jpg');
I2 = imread('2.jpg');
[r,c] = size(I2(:,:,3));
I=imresize(I, [r, c]);
imshow(I);
I = rgb2ycbcr(I);
I2 = rgb2ycbcr(I2);
[Gx,Gy] = imgradientxy(I(:,:,1),'sobel'); %y-plane
[mag, dir] = imgradient(Gx, Gy);
[Gx1,Gy1] = imgradientxy(I2(:,:,1),'sobel'); %y-plane
[mag1, dir1] = imgradient(Gx1, Gy1);
imshow(imerode(abs(mag-mag1)>120,1),[])

您可以尝试不同颜色空间的不同平面,直到您在图像中获得所需的强度不变图案。