How can I implement block search in this program?
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hello all! I wanted to compare image al , with another image b, which is a block of image form the previous image al. I tried splitting image al block by block and storing them in 4 different matrices(and implement SSD), which I've programmed below. But when I run them, it looks like its into an infinite loop. Is there any other method to process blocks and match them? Please help.
clear all;
close all;
al = imread('testimage.jpg');
br = uint8(zeros(125, 125, 3));
br(1:126, 1:126,:) = al(80:205, 100:225 , :)
imtool(al); imtool(br);
al= rgb2gray(al);
al = im2double(al);
br= rgb2gray(br);
br = im2double(br);
for(i =1:1:126)
for (j = 1:1:126)
c(i,j) = al(i,j)
end
end
for(i =99:1:225)
for (j = 99:1:225)
d(i,j) = al(i,j)
end
end
for(i =99:1:225)
for (j = 1:1:126)
e(i,j) = al(i,j)
end
end
for(i =1:1:126)
for (j = 99:1:225)
f(i,j) = al(i,j)
end
end
imtool(c); imtool(d); imtool(e); imtool(f)
1 Commento
Stephen23
il 25 Set 2014
You mention that you wish to "match" the blocks from the image. What exactly do you mean by this? Is pixel-wise RGB value equivalence a "match"?
Risposta accettata
Stephen23
il 25 Set 2014
Modificato: Stephen23
il 25 Set 2014
MATLAB's feature called vectorization would be a great help, it allows you to perform operations on whole arrays, without requiring any loops. It is faster, neater, and less prone to bugs.
This means that
for(i =1:1:126)
for (j = 1:1:126)
c(i,j) = al(i,j)
end
end
can simply be
c(1:126,1:126) = al(1:126,1:126);
or, if this is the first time that c is defined:
c = al(1:126,1:126);
This also applies to the two lines
br = uint8(zeros(125, 125, 3));
br(1:126, 1:126,:) = al(80:205, 100:225 , :)
where the first line really is not required:
br = al(80:205,100:225,:);
This introduction to indexing might be useful to read too:
However you are working with image data, which often consists of 3D arrays. You will also need to consider what happens to that third array dimension.
Note that it is best to avoid i and j as a variable names, as these represent imaginary/complex values.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su 3-D Volumetric Image Processing in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!