2010-04-30 191 views
0

如果两幅图像的大小不同,是否可以使用Matlab比较两幅图像的颜色?我面临的问题是,我想要检测出彩色补丁的存在一个图像?使用matlab对两幅图像进行颜色比较

+0

您会提供有关所提供答案的反馈吗?你有没有找到你要找的东西?需要更多详细信息或反馈才能完全解决您的问题。 – Geoff 2010-05-07 15:08:42

+0

你好,对于最近的回复抱歉,已经尝试了所有给定的方法,但由estanford提供的解决方案对我来说效果很好。感谢你们所有人的帮助。 – user265536 2010-05-18 03:18:49

回答

0

这将是一个有点粗糙,但你可以裁剪你的图像到最低限度共同的大小,如果这将足以满足您的应用程序:

A = imread("image1.jpg"); 
B = imread("image2.jpg"); 

rows = min(size(A,1), size(B,1)); 
cols = min(size(A,2), size(B,2)); 

croppedA = A(1:rows, 1:cols, :); 
croppedB = B(1:rows, 1:cols, :); 
1

你可以只比较规范化直方图(即,如颜色概率分布)。如果大图和小图在语义上相同,则它们的归一化直方图是相似的。

如果它们在语义上不同,那么它们的直方图将会是,可能有所不同。

1

你有图像处理工具箱吗?如果是这样,您可以通过拍摄图像来解决问题,将它们分解为各自的分量颜色通道,调整各个通道的尺寸,并将它们重新组合为调整大小的彩色图像。我写了一个程序来做到这一点前一阵子,我记得看起来像这样的代码:

function imout = ResizeRGB(imin,height,width) 
imout = zeros(height,width,3); 

iminR = imin(:,:,1); 
iminG = imin(:,:,2); 
iminB = imin(:,:,3); 

imoutR = imresize(iminR, [height width]); 
imoutG = imresize(iminG, [height width]); 
imoutB = imresize(iminB, [height width]); 

imout(:,:,1) = imoutR; 
imout(:,:,2) = imoutG; 
imout(:,:,3) = imoutB; 

(因为我没有IPT的时刻派上用场,该程序应被视为伪即使它是或多或少正确的matlab语法。我不能运行它没有IPT,所以我不能告诉它是否越野车)

一旦你调整图像,使他们有共同的尺寸,问题与相同尺寸的两幅图像的颜色比较问题相同。另一方面,如果您有补丁的图片和可能包含该补丁的图片,则可以考虑使用二进制掩码来限制互相关结果(IPT中的xcorr2)。有关该方法的更多信息,请参见MathWorks网站上的教程:http://www.mathworks.com/products/demos/image/cross_correlation/imreg.html