i am having problem in reading scanned images in OMR Project

조회 수: 7 (최근 30일)
Umer Sabir
Umer Sabir 2017년 1월 6일
댓글: Umer Sabir 2017년 1월 6일
clc; close all; clear all; %directory from reference pics are selected original = rgb2gray(imread('C:\Users\Sabir Malik\Documents\MATLAB\.jpg')); srcFiles = dir('C:\Users\Sabir Malik\Documents\MATLAB\Project\img295.jpg'); %Colomns name in Mircosoft Excel Save File T={'Roll no','score','status'}; sheet=1; %specifyig excel sheet number % cR='E1'; xlswrite('result.xls',T,sheet) %matlab function to write result in excel len=length(srcFiles); %matlab function to get lentgh of all images files scr=zeros(len,1); %making score lentgh to zeros initially sts=zeros(len,1); %making status zeros initially
for khi = 1 : len %for loop from 1 to lentgh of all images filename = strcat('C:\Users\Sabir Malik\Documents\MATLAB\Project\',srcFiles(khi).name); %getting file path I2=rgb2gray(imread(filename)); %converting rgb image to gray using matlab function %figure,imshow(I); [I3]=imageRegistration(original,I2);
I4 = imresize(I3, [631 489]);
[I]=imageRegistration(original,I4);
options='ABCD'; % Options of OMR sheet
ans=''; % This string stores the options entered by the student
key='C C C C B B D D A A C C A A D D B B B C '; % This string contains correct answers
x=99; % x-coordinate of first bubble
y=200; % y-coordinate of first bubble
s=37; %spacing between each bubble
sr=32; %spacing between consecutive rows
for i=1:10 %for loop for getting result of first 10 blobs
sy=y+(i-1)*sr;
for j=1:4 %for loop for recognizing 4 blobs colomn wise
sx=x+(j-1)*s;
% disp(sx);
% disp(sy);
% disp(I(sy,sx));
if((I(sy,sx)<25))
c(i,j)=0;
else
c(i,j)=1;
end
end
end
%Same process for the other half
x=289; % x-coordinate of first bubble in other half
y=200; % y-coordinate of first bubble in other half
for i=11:20 %for loop for next 10 blobs
sy=y+(i-11)*sr;
for j=1:4 %for loop for next 10 blobs 4 colomns
sx=x+(j-1)*s;
% disp(sx);
% disp(sy);
% disp(I(sy,sx));
if((I(sy,sx)<25))
c(i,j)=0;
else
c(i,j)=1;
end
end
end
%printing the results in the string
for i=1:20 %for loop for priinting all 20 blobs result
m=0;
for j=1:4
if(c(i,j)==0)
ans=[ans ' ' options(j)]; %handFill blob values is recognized and check from options
else
m=m+1;
end
end
if(m==4)
ans=[ans ' NONE']; %if no blob is filled None is values marked
end
end
score=0;
disp(ans);
for i=1:20
[token,remain]=strtok(ans); %strtok function psses string from left to right to token
[ktoken,kremain]=strtok(key); %if any space is found in str it will be pushed in remain as delimeter
if(token==ktoken) %compare ans token with given correct key token if it matches
score=score+1; % scores are incremented by one otherwise remains same
end
ans=remain;
key=kremain;
end
disp('You have scored : ')
disp(score);
if(score==20) %if else condition for status of OMR Sheet
status=sprintf('pass');
else
status=sprintf('fail');
end
scr(khi,1)=score;
if (status == 'pass')
T1={'pass'};
else
T1={'fail'};
end
roll=['CS1410' num2str(khi)] %giving registration number to each student serial wise
T2={roll}
cR2=sprintf('A%d',khi+1); %sprintf function prints each value row wise
xlswrite('result.xls',T2,1,cR2) %writing Status in Excel sheet
cR1=sprintf('C%d',khi+1);
xlswrite('result.xls',T1,1,cR1) %writing registration number in Excel sheet
%h = msgbox(['You scored ' num2str(score) 'marks' ' ' ' RESULT : ' status], 'Test Result');
end
cR='B2';
xlswrite('result.xls',scr,1,cR) %writng score obtained in excel sheet
/matlabcentral/answers/uploaded_files/66917/img294.jpg>>

답변 (0개)

카테고리

Help CenterFile Exchange에서 Import, Export, and Conversion에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by