intersection of multiple images

hi chandra, what should i do if i want to display the intersection portion.

1 comentario

Image Analyst
Image Analyst el 6 de Dic. de 2011
There is no context for this question. You should reply to your other thread and delete this one, or at the very least, put in a link to the other thread that you split off from.

Iniciar sesión para comentar.

 Respuesta aceptada

Chandra Kurniawan
Chandra Kurniawan el 6 de Dic. de 2011
Hello,
Sorry for waiting.
Here the code :
array = uint8(intersection);
for row = size(intersection,1) : -1 : 1
if ~any(find(intersection(row,:)))
array(row,:) = [];
end
end
for col = size(intersection,2) : -1 : 1
if ~any(find(intersection(:,col)))
array(:,col) = [];
end
end
imshow(array);

19 comentarios

David Young
David Young el 6 de Dic. de 2011
It would be better to edit this into the previous answer, so as to avoid proliferation of questions.
k.v.swamy
k.v.swamy el 6 de Dic. de 2011
i have written the below code can u modify that
clc;
clear all;
close all;
I = double(imread('cameraman.tif'));
J = double(I);
J(115:155, 192:204) = 50;
imshow(uint8(I)),figure,imshow(uint8(J))
xcount=0;ycount=0;
l=length(I);
s=zeros(l,l)
for i=1:l
xcount=xcount+1;
for j=1:i
if I(i,j)==J(i,j)
ycount=ycount+1;
s(xcount,ycount)=I(i,j);
elseif I(i,j)~=J(i,j)
s(xcount,ycount)=0;
end
end
end
figure,imshow(s)
Chandra Kurniawan
Chandra Kurniawan el 6 de Dic. de 2011
Here, I modify the code from my last own code
clear; clc;
I = double(imread('cameraman.tif'));
J = double(I);
J(115:155, 192:204) = 50;
intersection = abs(J - I);
array = uint8(intersection);
for row = size(intersection,1) : -1 : 1
if ~any(find(intersection(row,:)))
array(row,:) = [];
end
end
for col = size(intersection,2) : -1 : 1
if ~any(find(intersection(:,col)))
array(:,col) = [];
end
end
imshow(uint8(I)); title('Image A');
figure, imshow(uint8(J)); title('Image B');
figure, imshow(uint8(array)); title('Intersection A and B');
k.v.swamy
k.v.swamy el 6 de Dic. de 2011
but we need to get the intersection portion,what v r getting is the area which is not common to the two images.if u dont mind can u look at the code what i have written.
k.v.swamy
k.v.swamy el 6 de Dic. de 2011
while i was executing that code it is going to a infinite loop.
Chandra Kurniawan
Chandra Kurniawan el 6 de Dic. de 2011
Why did you write 'for j = 1 : i'?
Did you mean 'for j = 1 : l'??
It makes your final size of 's' becomes '256 x 32896'.
The size of 's' might be 256 x 256, right??
Chandra Kurniawan
Chandra Kurniawan el 6 de Dic. de 2011
I modified it once again.
Maybe this is what you mean??
clear; clc;
I = double(imread('cameraman.tif'));
J = double(I);
J(115:155, 192:204) = 50;
imshow(uint8(I)),
figure, imshow(uint8(J));
xcount = 0; ycount = 0;
l = length(I);
s = zeros(l, l);
for i = 1 : l
xcount = xcount + 1;
for j = 1 : l
if I(i,j) == J(i,j)
ycount = ycount + 1;
%s(xcount, ycount) = I(i,j);
s(i,j) = I(i,j);
elseif I(i,j) ~= J(i,j)
%s(xcount,ycount)=0;
s(i,j) = 0;
end
end
end
figure, imshow(uint8(s));
k.v.swamy
k.v.swamy el 6 de Dic. de 2011
yes i got your statement.is it the right way of writing the code.can u suggest any modification in that so that i can continue with that.
Chandra Kurniawan
Chandra Kurniawan el 6 de Dic. de 2011
So, my last modified code is right??
Your code works well. So, you can ignore writing 'xcount = 0;' and 'ycount = 0;'.
You don't need to use this variable as a element counter.
You just need i and j.
So, I replaced '%s(xcount, ycount) = I(i,j);' with 's(i,j) = I(i,j);'
And '%s(xcount,ycount)=0;' with 's(i,j) = 0;'
You ask me for any modification so that you can continue..
So, what will you do with your next step??
Chandra Kurniawan
Chandra Kurniawan el 6 de Dic. de 2011
Does it clear for you? :)
k.v.swamy
k.v.swamy el 6 de Dic. de 2011
fine chandra,sorry for the delay as i went outside.what should be the limits of i and j.i think i varies from 1 to 256 and j varies from 1 to 256.pl reply.
Chandra Kurniawan
Chandra Kurniawan el 6 de Dic. de 2011
Yes, of course.
Because i represents image height [row] and j represent image width [column].
So, both of value are from 1 to 256 as height and width of cameraman.tif
k.v.swamy
k.v.swamy el 6 de Dic. de 2011
iam getting the common area,but iam unableto show the non intersection region.
k.v.swamy
k.v.swamy el 6 de Dic. de 2011
yes chandra workin fine iam pasting the code also
clc;
clear all;
close all;
I = double(imread('cameraman.tif'));
J = double(I);
J(115:155, 192:204) = 50;
imshow(uint8(I)),figure,imshow(uint8(J))
l=length(I);
for i=1:256
for j=1:256
if I(i,j)==J(i,j)
s(i,j)=I(i,j);
elseif I(i,j)~=J(i,j)
s(i,j)=255;
end
end
end
figure,imshow(uint8(s))
pl hav a look and giv me reply.
Chandra Kurniawan
Chandra Kurniawan el 6 de Dic. de 2011
What does 'non intersection region'??
Can you tell me which area that you mean??
Yes, I have saw your code.
Why do you fill the intersection area with white pixels [255]?
It seem good if filled with black pixels.
k.v.swamy
k.v.swamy el 6 de Dic. de 2011
s it is workin.as i have taken s(i,j)=255; iam able to recognize the intersection area.
k.v.swamy
k.v.swamy el 7 de Dic. de 2011
hi chandra,its me k.the code which we have written works if the images are of same size.how to write the code for two different images.
Chandra Kurniawan
Chandra Kurniawan el 7 de Dic. de 2011
Hi, k
I think it is impossible.
You can only do matrix subtraction if both of dimension and size are same.
If we know about matrix concept, if we have matrix A [p x q] and B [r x s], subtraction matrix A with matrix B can be occur only is p == r and q == s.
So, you cannot perform it with different size of two matrices.
k.v.swamy
k.v.swamy el 7 de Dic. de 2011
yes i do agree with the answer,but in my assignment iam given two sets of images for which i have to find the intersection
https://picasaweb.google.com/103266594409982679463/ImagesSet1?authuser=0&feat=directlink
https://picasaweb.google.com/103266594409982679463/IMAGESSET2?authuser=0&feat=directlink
i hav given u the links and i have written the code like
clc;
clear all;
close all;
I = double(imread('work.jpg'));
J = double(imread('work1.jpg'));
imshow(uint8(I)),figure,imshow(uint8(J))
l=length(I);
for i=1:l
for j=1:l
if i>1200
i=1200
end
if I(i,j)==J(i,j)
s(i,j)=I(i,j);
elseif I(i,j)~=J(i,j)
k(i,j)=I(i,j);
end
end
end
figure,imshow(uint8(k))
pl verify for once

Iniciar sesión para comentar.

Más respuestas (1)

Chandra Kurniawan
Chandra Kurniawan el 7 de Dic. de 2011

1 voto

I got little confused with your question.
Let me pick one picture.
Then which another picture will be intersected with that image??

3 comentarios

k.v.swamy
k.v.swamy el 8 de Dic. de 2011
If the image u have taken is from set 1 then take another image from set 2 and I assume image from set 1 has work and from set2 as work1
Pls verify the code does it work
Waiting for u r reply
Thank u
k.v.swamy
k.v.swamy el 8 de Dic. de 2011
chandra if u get any clue pl reply me.
k.v.swamy
k.v.swamy el 9 de Dic. de 2011
hi chandra,can u pl look at my problem and giv me reply.

Iniciar sesión para comentar.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by