intersection of multiple images

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

1 Comment

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.

Sign in to comment.

 Accepted Answer

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 Comments

It would be better to edit this into the previous answer, so as to avoid proliferation of questions.
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)
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');
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.
while i was executing that code it is going to a infinite loop.
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??
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));
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.
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??
Does it clear for you? :)
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.
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
iam getting the common area,but iam unableto show the non intersection region.
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.
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.
s it is workin.as i have taken s(i,j)=255; iam able to recognize the intersection area.
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.
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.
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

Sign in to comment.

More Answers (1)

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

3 Comments

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
chandra if u get any clue pl reply me.
hi chandra,can u pl look at my problem and giv me reply.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!