i used the below code for image retrival through corel database but my results are not upto the mark,please verify my node and let me get your help to make necessary corrections,I use local color feature

3 次查看(过去 30 天)
tic
disp('query')
[filename, pathname]=uigetfile({'*.jpg'},'queryimage');
img=strcat(pathname,filename);
a=imread(img);
subplot(4,5,3)
imshow(img)
set(gcf, 'Units', 'Normalized', 'OuterPosition', [0 0.05 1 0.95]);
[r, c, numOfBands] = size(a);
%dividing image into 8x8 subblocks
bs=64;%block size
nob=(r/bs)*(c/bs);%Total no of blocks
k=0;
for i=1:(r/bs)
for j=1:(c/bs)
col1=bs*(j-1)+1;
row1=bs*(i-1)+1;
col2=bs*(j-1)+bs;
row2=bs*(i-1)+bs;
C{k+j}=imcrop(a,[col1 row1 col2 row2]);
end
k=k+(r/bs);
end
for i=1:nob
D = rgb2hsv(C{i});
% split image into h, s & v planes
h = D(:, :, 1);
s = D(:, :, 2);
v = D(:, :, 3);
% Create the histogram quantized into 8×3×3 bins
X= zeros(8, 3, 3);
for k = 1 : numel(h)
indexH = floor(8 * h(k)) + 1;
indexS = floor(3 * s(k)) + 1;
indexV = floor(3 * v(k)) + 1;
if indexH > 8
indexH = 8;
end
if indexS > 3
indexS = 3;
end
if indexV > 3
indexV = 3;
end
X(indexH, indexS, indexV) = X(indexH, indexS, indexV) + 1;
end
x{i}=X;
end
disp('database')
CP=zeros(1,999);
str='.jpg';
for z=1:999
b=num2str(z);
c=strcat(b,str);
a=imread(c);
[r, c, numOfBands] = size(a);
%dividing image into 8x8 subblocks
bs=64;%block size
nob=(r/bs)*(c/bs);%Total no of blocks
k=0;
for i=1:(r/bs)
for j=1:(c/bs)
col1=bs*(j-1)+1;
row1=bs*(i-1)+1;
col2=bs*(j-1)+bs;
row2=bs*(i-1)+bs;
C{k+j}=imcrop(a,[col1 row1 col2 row2]);
end
k=k+(r/bs);
end
for i=1:nob
D = rgb2hsv(C{i});
% split image into h, s & v planes
h = D(:, :, 1);
s = D(:, :, 2);
v = D(:, :, 3);
% Create the histogram quantized into 8×3×3 bins
Y= zeros(8, 3, 3);
for k = 1 : numel(h)
indexH = floor(8 * h(k)) + 1;
indexS = floor(3 * s(k)) + 1;
indexV = floor(3 * v(k)) + 1;
if indexH > 8
indexH = 8;
end
if indexS > 3
indexS = 3;
end
if indexV > 3
indexV = 3;
end
Y(indexH, indexS, indexV) = Y(indexH, indexS, indexV) + 1;
end
y{i}=Y;
end
for i=1:nob
CP(z)=euclideanDistance(x{i}, y{i});
CP(z)=CP(z)+1;
end
end
B=sort(CP);
for z=1:999
for M=1:12
if(CP(z)==B(M))
subplot(5,3,M+3)
z=num2str(z);
imshow(strcat(z,str))
end
end
end
disp('retrived')
toc
  9 个评论
Walter Roberson
Walter Roberson 2018-1-25
"Please let me know if you could help me with this or not"
No, you appear to need the solution faster than I can provide it, because I need to sleep at night. You had better hire a team of consultants.
teja jayavarapu
teja jayavarapu 2018-1-25
Sorry I didn't mean to bother you,I can wait for your solution, Hiring A team of consultants can give me a solution but completing the task under your guidance will give me complete idea.
Please count me in.I require your help.
Please reply with yes if you want to help me or else reply with no.
What ever May be your decision Thank You for all the you have made.

请先登录,再进行评论。

回答(2 个)

teja jayavarapu
teja jayavarapu 2018-1-25
This is the related link where the test images are available, I think you can manage to download images,sorry i can't upload the image set as it is above 5MB.In that link there test file of 1000 immages(.zip file).

Walter Roberson
Walter Roberson 2018-1-25
  • Your logic for indexing when you store the cropped images was not correct.
  • You were failing to add in the pathname when you imread() and imshow()
  • You were not pre-allocating arrays. This is a weakness rather than an outright error
  • You were asking to imcrop by start and ending indices. imcrop() expects width and height, not ending indices.
  • imcrop has a known weakness that is often overlooked: if you are not at the right edge then imcrop extracts one column more than it should, and if you are not at the bottom edge then imcrop extracts one row more than it should.
I have attached cleaned up code.
I am not able to test this further as routine euclideanDistance is not defined.
  7 个评论
teja jayavarapu
teja jayavarapu 2018-1-27
编辑:teja jayavarapu 2018-1-27
Yes you are right I am adding up all the distances of the blocks and comparing the resultant with the database. Is there is any problem with that.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Computer Vision with Simulink 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by