image processing with parallel approach
4 次查看(过去 30 天)
显示 更早的评论
s=load('matlab.mat','imagest1','imagest2','Train_Number');
imagest1=s.imagest1;
imagest2=s.imagest2;
Train_Number=s.Train_Number;
eyeimage=imread('C:\Users\PRIYAM\Desktop\project\project pictures and links\CASIA Iris Image Database (version 1.0)\002\1\009.bmp');
%imshow(eyeimage)
radpixels=50;
angpixels=1000;
[circleiris, circlepupil, imagewithnoise,] = segmentiris(eyeimage);
[polar_array, noise_array] = normaliseiris(imagewithnoise, circleiris(2),circleiris(1), circleiris(3),circlepupil(2), circlepupil(1), circlepupil(3),...
eyeimage,radpixels,angpixels);
subplot(2,2,2)
imshow(polar_array)
%imshow(polar_array)
[icodeV,icodeH]= irisfeature(polar_array);
for i=1:Train_Number
HD=0;
for j=1:500
HD=HD+((xor(icodeV(1,j),imagest2(i,j))+xor(icodeH(1,j),imagest1(i,j)))/2);
end
hd(i)=HD;
end
loc=0;
for i=1:Train_Number
if (hd(i)<149.5)
loc=i;
fprintf('image matched with image number %d \n with hamming distance %d',loc,hd(i));
end
end
if (loc==0)
disp('image not matched with any image');
end;toc
How to parallelize it? I have used parfor, but the exexcution time remains same. Please help me to make the code snippet parallel. What should be the alternative parfor code for it?
0 个评论
回答(1 个)
Walter Roberson
2012-2-22
Vectorize, not parfor!
For example,
loc = find(hd < 149.5, 1, 'first');
if ~isempty(loc)
fprintf('image matched etc');
else
fprintf('image not matched');
end
1 个评论
Edric Ellis
2012-2-22
I would say: vectorize first, and then you'll probably be in a better position to use PARFOR if you wish. Plus, of course, vectorization might get you intrinsic multithreading (depending on your operation), which definitely beats PARFOR on a single machine.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Parallel for-Loops (parfor) 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!