Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function [resultat2] = difference(image1, image2)
- %llegir les dues imatges
- I1 = imread(image1);
- I2 = imread(image2);
- %creem una matriu amb les diferencies per a R, G i B de cada pixel, i
- %decidir si allò és o no part de l'objecte
- DifersR = abs(I1(:,:,1)-I2(:,:,1));
- DifersG = abs(I1(:,:,2)-I2(:,:,2));
- DifersB = abs(I1(:,:,3)-I2(:,:,3));
- Obj = zeros(size(I1,1), size(I1,2));
- objecte = zeros(size(I1,1), size(I1,2), 3);
- minx = 0;
- miny = 0;
- maxx = 0;
- maxy = 0;
- mat1 = int32(zeros(4096,4));
- mid1 = 0;
- mid2 = 0;
- for k = 1:4096
- mat1(k,1) = fix((k-1)/(256))*16;
- mat1(k,2) = mod(fix((k-1)/16),16)*16;
- mat1(k,3) = mod(k-1,16)*16;
- end
- mat2 = mat1;
- for i = 1:size(I1,1)
- for j = 1:size(I1,2)
- %col1 = int32(I1(i,j,:));
- %vaa1 = int32(idivide(col1(1,1,1),16,'floor')*256+idivide(col1(1,1,2),16,'floor')*16+idivide(col1(1,1,3),16,'floor')+1);
- %if(mat1(vaa1,4) == 0)
- % mid1 = mid1+1;
- %end
- %mat1(vaa1,4) = mat1(vaa1,4)+1;
- if (DifersR(i,j) > 40 || DifersG(i,j) > 40 || DifersB(i,j) > 40)
- Obj(i,j) = 1;
- objecte(i,j,:) = I2(i,j,:);
- if (minx == 0 || i < minx)
- minx = i;
- end
- if (miny == 0 || j < miny)
- miny = j;
- end
- if (maxx == 0 || i > maxx)
- maxx = i;
- end
- if (maxy == 0 || j > maxy)
- maxy = j;
- end
- col2 = int32(I2(i,j,:));
- vaa2 = int32(idivide(col2(1,1,1),16,'floor')*256+idivide(col2(1,1,2),16,'floor')*16+idivide(col2(1,1,3),16,'floor')+1);
- if(mat2(vaa2,4) == 0)
- mid2 = mid2+1;
- end
- mat2(vaa2,4) = mat2(vaa2,4)+1;
- end
- end
- end
- IFinal = zeros((maxx-minx+1), (maxy-miny+1));
- for i = 1:maxx-minx
- for j = 1:maxy-miny
- IFinal(i,j) = Obj(minx+i-1, miny+j-1);
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement