How can I implement block search in this program?
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Emmanuel
am 25 Sep. 2014
Bearbeitet: Stephen23
am 25 Sep. 2014
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 Kommentar
Stephen23
am 25 Sep. 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"?
Akzeptierte Antwort
Stephen23
am 25 Sep. 2014
Bearbeitet: Stephen23
am 25 Sep. 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.
1 Kommentar
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Explore and Edit Images with Image Viewer App finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!