彩色图片匹配

来源:互联网 发布:铺货软件 编辑:程序博客网 时间:2024/05/12 01:51
 
、彩色图像提取. 
function rgbsb() 
%读入图像
yuantu=imread('car.jpg');
pipeitu=imread('lic.jpg');
figure,imshow(yuantu),title('原图');
figure,imshow(pipeitu),title('原图');
 
%图像灰度化
yuantu_gray=gray(yuantu);
pipeitu_gray=gray(pipeitu);
figure,imshow(yuantu_gray),title('原图灰度');
figure,imshow(pipeitu_gray),title('匹配图灰度');
 
%取得图像大小
[pipeitu_h,pipeitu_w]=size(pipeitu_gray);
[yuantu_h,yuantu_w]=size(yuantu_gray);
 
figure,imshow(yuantu_gray),title('原图灰度');
figure,imshow(pipeitu_gray),title('匹配图灰度');
figure,imshow(yuantu),title('原图匹配结果');
hold on;
for i=1:yuantu_h-pipeitu_h
    for j=1:yuantu_w-pipeitu_w
        temp=imcrop(yuantu_gray,[j,i,pipeitu_w-1,pipeitu_h-1]);
        r=corr2(temp,pipeitu_gray)
        if r>0.9
            plot(j:j+pipeitu_w,i,'r');
            plot(j:j+pipeitu_w,i+pipeitu_h,'r');
            plot(j,i:i+pipeitu_h,'r');
            plot(j+pipeitu_w,i:i+pipeitu_h,'r');
        end
    end
end
       
%图像灰度化
function I = gray(varargin)
X = parse_inputs(varargin{:});
origSize = size(X);
threeD = (ndims(X)==3);
T = inv([1.0 0.956 0.621; 1.0 -0.272 -0.647; 1.0 -1.106 1.703]);
coef = T(1,:)';
if threeD
 X = reshape(X(:),origSize(1)*origSize(2),3);
 sizeOutput = [origSize(1), origSize(2)];
 if isa(X, 'double') || isa(X, 'single')
    I = X*coef;
    I = min(max(I,0),1);
 else
    I = imlincomb(coef(1),X(:,1),coef(2),X(:,2),coef(3),X(:,3), ...
                  class(X));
 end
 I = reshape(I,sizeOutput);  
else
 I = X * coef;
 I = min(max(I,0),1);
 I = [I,I,I];
end
 
function X = parse_inputs(varargin)
iptchecknargin(1,1,nargin,mfilename);
if ndims(varargin{1})==2
 if (size(varargin{1},2) ~=3 || size(varargin{1},1) < 1)
    eid = sprintf('Images:%s:invalidSizeForColormap',mfilename);
    msg = 'MAP must be a m x 3 array.';
    error(eid,'%s',msg);
 end
 if ~isa(varargin{1},'double')
    eid = sprintf('Images:%s:notAValidColormap',mfilename);
    msg1 = 'MAP should be a double m x 3 array with values in the';
    msg2 = ' range [0,1].Convert your map to double using IM2DOUBLE.';
    error(eid,'%s %s',msg1,msg2);
 end
elseif (ndims(varargin{1})==3)
    if ((size(varargin{1},3) ~= 3))
      eid = sprintf('Images:%s:invalidInputSize',mfilename);
      msg = 'RGB must be a m x n x 3 array.';
      error(eid,'%s',msg);
    end
else
 eid = sprintf('Images:%s:invalidInputSize',mfilename);
 msg1 = 'RGB2GRAY only accepts a Mx3 matrix for MAP or a MxNx3 input for ';
 msg2 = 'RGB.';
 error(eid,'%s %s',msg1,msg2);
end
X = varargin{1};
if islogical(X)
 eid = sprintf('Images:%s:invalidType',mfilename);
 msg = 'RGB2GRAY does not accept logical arrays as inputs.';
 error(eid,'%s',msg);
end
 
 
四、图片
 
                                    
                                                                         图1-1  原图
 
                               
                                        
                                                                           图1-2  匹配图
 
 
                                      
                                                                      图1-3  灰度图
 
 
                                          
                                                                        图1-4  灰度匹配图
 
 
                                       
                                                                      图1-5  匹配结果图
原创粉丝点击