matlab 을 이용하여
Target image 에서 template image 의 NCC (normalized cross correlation) 분석

normxcorr2  명령을 사용하여 NCC의 수행이 가능하다.


ex)

clear all; clc; close all;

%% 이미지가 너무 크므로 작게 자르고 template 과 scene image 를 분리
template = rgb2gray(imread('onion.png'));
scene = rgb2gray(imread('peppers.png'));

rect_template = [111 33 65 58];
rect_scene = [163 47 143 151];
template = imcrop(template,rect_template);
scene = imcrop(scene,rect_scene);

figure, imshow(template)
figure, imshow(scene)
%% NCC
c = normxcorr2(template,scene);
figure, surf(c), shading flat
%%
[max_c, imax] = max(abs(c(:)));
[row_peak, column_peak] = ind2sub(size(c),imax);

row_begin = row_peak-size(template,1)+1;
row_end   = row_peak;
column_begin = column_peak-size(template,2)+1;
column_end   = column_peak;

recovered_template = scene;
recovered_template(row_begin:row_end,column_begin:column_end) = template;

recovered_template(row_begin:row_end ,column_begin)=0;
recovered_template(row_end           ,column_begin:column_end)=0;
recovered_template(row_begin:row_end ,column_end)=0;
recovered_template(row_begin,column_begin:column_end)=0;


figure, imshow(recovered_template)




 

 

matlab 에서 imread 명령을 사용하여
color image 를 불러 올 수 있으며
그 결과는 R,G,B 각각에 대한 0~255 의 값을 가지는 intensity 로 표현된다.


ex)

clear all; clc; close all;
color_image=imread('onion.png'); % color image 를 불러온다.
                                 % 아래와 같이 3차원 행렬로 저장된다
                                 % (:,:,1)  : Red
                                 % (:,:,2)  : Green
                                 % (:,:,3)  : Blue

r=color_image; r(:,:,[2 3])=0;   % Red   요소만 남기고 모두 0으로 만든다.
g=color_image; g(:,:,[1 3])=0;   % Green 요소만 남기고 모두 0으로 만든다.
b=color_image; b(:,:,[1 2])=0;   % Blue  요소만 남기고 모두 0으로 만든다.

subplot(2,3,2); imshow(color_image);
subplot(2,3,4); imshow(r);
subplot(2,3,5); imshow(g);
subplot(2,3,6); imshow(b);

+ Recent posts