Tag Archives: Final Year Project

During The Final Year Project… The Reality from my Undergrad Eye…

The Final Year Project, for those who are undergraduates may know what am I talking about as for others, just wait till you get into a University, which is one of the most important pin points of an Undergrad Life. Some call it, “Thesis”, “Final Project”, “Final Research Project”, and so on, but nevertheless it is the Project that every single Undergrad is suppose to complete in order to graduate at their Final year of the Degree Program. I’m writing this based on my personal experience during I was an undergraduate at APIIT studying for my Software Engineering degree at Staffordshire University. Most of the people do not talk about publicly about this period of Life, moreover no one is bothered or everyone expects others to experience by themselves. But I thought of giving a little glimpse of it for all the curious young minds out there… 😉 I think it would be much better for a fresher to be aware of this huge storm they are gonna face someday ahead the years.

London-International-College-550x330[1]

The Heat…

It all begins at the beginning of the final semester of the final year, even though traditionally at APIIT, we have to start working on it according to a schedule from the first semester of the final year, well well  but everyone waits till the last moment to heat up themselves 😛 ! My fellow colleagues would definitely know about what am talking about 😉 lol Anyhow the heat increases, with the less time left, final assignment projects, final exams and so on, and added to that your supervisors and assessors of the project haunting you xD ! I still remember how we used to hide ourselves whenever we saw our supervisor or assessor.. Oh man, Good memories ! 😀 And also in the middle of all that, your parents and friends asking you about the project and and mentioning the fact that you are at the end of your degree you have to make them proud and all that talks ! -_-

The Stress…

The stress basically starts up with the heat which arises with the beginning of the final semester, which is caused by the facts, the biggest pin point of your degree life, the final project which everything depends on even your Honors class (1st Class, 2nd Class, so on) of the degree, speaking of which the FYP (Final Year Project) directly impacts on your final grade of the degree. Does not matter whether you have been a brilliant student through out your undergraduate life, if you screw this up even slightly, all that would be useless. This is the moment all your parents, cousins, friends, and neighbors are waiting to see the results of, which indeed is a killer stress having to imagine all those people around you staring at your final outcome. Specially the parents of yours who has spent a huge amount of money on your studies if you are an undergraduate of a private university.

The competition of course among the fellow batch mates, which is something always goes behind the back of everyone, in fact a known bitter truth no one likes to talk about. Among all that the fact that you have to deal with your final assignments, projects and exams, OMG talk about STRESS ! Imagine, having to study and work for your projects and exams while having to finish and entire research by your own and compile a full professional level undergraduate thesis by your own, YES ! that is what am talking about ! With in that very few months, you have to manage all that. This is a huge disadvantage for every single student, but which will eventually give a good experience for the student.
Even if you work hard, what if the final out come of the project does not suffice the objectives of your project ? Oh boy thinking that was one of the huge stresses I ever had personally. The stress is all those above added up together, like a frigging thunderstorm roaming around you, a huge rock on top of your head. Trust me this stress is the biggest an undergraduate would ever go through in his life.

Your Parents.. Responsibility.. Money…

The responsibility of the amount of money your parents have spent on you, whereas for us, having to be studying at private University where our parents had to pay from millions for our studies as payments. The funny thing is even though they have spent such a huge amount of money, we still can not guarantee proper grades, because does not matter how much you have paid it all depends on all your hard work as a student.
And the worst is that being in a private university which has a very strict line of academical rules and standards for course work for students, OMG, the pressure is even more higher. Knowing that even the slightest thing could screw up the whole degree which would waste all your parents money, would literally begin to give a heart attack every single time.

parentsweekend768x300[1]

Well that is of course if you care about the money your parents have spent on you and if you really wanna succeed in life with a good degree. This comes as a true motivation at times, well for me it was more of a motivation rather than a stress which is of course was a bit of a stress. Knowing that you somehow have to make your parents proud and prove them that they have not wasted their hard earned money on you, yes it comes from the bottom of the heart and when they see you working so hard to make them proud, nothing else would make them proud even if you loose. Some parents puts their whole life in jeopardy just to send you to a good university and lead you to a better life, specially in those cases the stress on the student is too damn high, and it is their responsibility no matter what…

Doing Something out of the Box ? Good Luck Son !

So I heard that you are hoping to do something out of the box yeah ? Oh well Boy, Good Luck ! I don’t about other Universities, but as in at where I studied doing something totally new and creative or totally out of the box for Your Final year Project, is like literally hanging your self. lol ! Its gonna be a huge risk that you would be taking, but it would all be totally worth it at the end IF you succeed ! but if you mess it up or if you are unable to fulfill the objectives you have defined at the beginning, oh well everything would go down the drain no matter how well you have done so far, what kind of a good research you have done. This would actually kill you when you are in the middle of all the stress, knowing that you are literally putting your neck out there for this new creative idea you wanna do for your project. And also when you tell people about it, (if you are an ordinary student) everyone would go like, Are you crazy ? You wouldn’t be able to finish it on time ? Is that even possible to do ? -_- and all that shit. Well if you are a well known talented student, they would go like, Oh WOW ! Thats awesome ! but isn’t that a lil risky ? 😛 lol either way all these outer environment would freak you out. And knowing the fact that You are on your own, oh boy, the pressure !

Sometimes this drives you crazy while you are going through all the final assignments and exams and crap -_- Yes I have been there. I still recall my Supervisor used to tell me, do you think you would have enough time to finish this up with the limited time and all these work you have got ? And every single time I heard that, it literally freaked me out, BUT I never gave up on my self, I knew my skill set and how i should achieve it using them and moreover I had a huge passion for the idea I had for my Project, which literally drew me to success. So hopefully I never had any doubts. This usually happens if your supervisor or assessor does not know you much as a student, even in my case he used to doubt me all the time, asking me whether I was able to do the work, asking me to show him the work I have done already every single time and so on. But do not get put down yourself, keep on working from your best and prove them wrong. 😉
Starting off is a huge problem whereas when you dont know where or how to start off prolly because no one has done that before, but do not worry, start somewhere and keep on researching. At the end of the tunnel you may find a light..

A Reason to be Proud..

If you think about it, in one way it is a reason to be proud of your self, when everyone else in your batch is doing some obvious random useless crap which has already been done before by the past seniors, YOU in the other hand is doing something EPIC ! something no one has ever done before. Trust me son, this factor will keep you on top of the world ! Even telling people that you are in to such a huge risk, such an innovative creation.. BOOM ! You would know the feeling..
Being different always feels good (well at least for my personally), but do not let it totally blind you with it. Keep an open mind, think of every single circumstances, always remind yourself of the risk that you are taking and be alerted.
If you are going through this, just know, You are taking a huge risk, but DO NOT GIVE UP and NEVER STOP BELIEVING ! NEVER LOSE YOUR PASSION ! no matter what they say or whatever happens. Just work hard ! work your *ss off ! 🙂 You will see a miracle at the end…

Your Friends and The Competition…

This is some kind of a dirty truth which no one would like to talk about. This is a moment where you get to choose between friendship and your personal success. But just because that you don’t have to be a total di**. Even though this is evaluated individually, there is still a competition going on between everyone in the batch, because at the end of the day everyone is trying to achieve the best GPA and get a good class from the degree, specially given the fact that 1st classes are given for only the best few.
Sometimes a good friend of yours would refuse to help you out with your project if they are jealous of you and they would probably ignore you. Be alerted, this happens with most of your so called friends 😉 or else they would lead you to a wrong path just to mess you up.. So be careful son !

Along with this some people decide to completely put down their friends in every single way possible, out of jealousy and out of being scared of other’s success. Which is really pathetic but some losers can not help themselves. lol 😛 Most of the time they would condemn your Project Idea, make fun of it in front of everyone else, discourage you saying that you can not do it, you wouldn’t finish it and so on such lame drama.. lol
Therefore make sure to stay away from such losers specially during your final year project and always surround your self with a supportive crowd of true friends.

You honestly don’t want to.. but you have no Choice…

During your Project days, with all the given stress and workload, you get extremely busy and sometimes unfortunately your friend comes up to you and ask for help with their project when they know you are good at it. But so sadly you are also extremely stuck and messed up with your own project in a totally different way which you can’t even figure out, at times like these you have to make a choice and like it or not you prolly would have to give priority for your own project having to turn down your friend who is in need… This is totally fair unless you are doing it out of your selfishness and competition.
I have personally faced so many situations like these during my project days. So what I did was trying to explain how I’m stuck with my one and how much more I have to finish in my, being politely said that its their responsibility be fair and understand the situation and approach someone else for help.
I had this one friend who was a girl, she asked me for some help with her project, and I said alright fine, I ll try my best but I’m also honestly messed up with mine. But later I forgot to get back to her with the help because I was really stressed and stuck with mine. Because of it until this day she does not speak with me. Funny enough she is the only one who acted like this when everyone else understood. So these kind of cases would be there once out of 10 times 😉
Well given the obvious reasons, its their responsibility to understand. It is a two way path actually you should be honest and give the fair reasons and they should understand the given circumstances. If they don’t cannot help it, this is about your future man !

No Sleep, No Appetite,  No Food,  No Mood !

This is some of the worst side effects you would face when you are going through your final year project, specially when there is only one or two weeks left for the submission. You literally do not feel like sleeping at all, you stay up all night long due to the stress, but for some people its the total opposite, they fell asleep even more often and sleep pretty well. lol 😛 Well after we humans are different from each other in nature. You get no appetite for food and you could stay without food even throughout a whole day.
Being moody is very common these days which comes obviously with the stress that you go through. This would be very annoying for your family members and specially your other friends, not to mention, obviously for your gf or bf. Well after all its their responsibility to understand the situation and deal with it.

I recall being up all night long coding on my project and coming to APIIT in the next day morning, being all moody and sleepy lol 😛 And I used to act very lazy and mean with everyone, looking all pale and sleepy.. oh oh and having my hair totally messed up, having a long beard looking like a cave man 😀 lol Everyone used to be like omg what has happened to you ? why are you acting like this and so on.. 😛 hikz xD Oh Yeah ! Good memories ! 😀
This actually drives you even more and sometimes it makes you even more harder knowing the fact that you should finish this off soon and get rid of this whole suffering.
So be prepared child !

being Extra Respectful and Scared for Lecturers and Admins.. lol

Being an undergrad for about 3 or 4 years you prolly have a clear idea whats the drill with interacting with Lecturers and the Academic Administration, knowing that they could screw you up from top to bottom if you mess with them. This is gets extremely cautions during the final year project time period. If you mess with a lecturer they could bring down your whole final year project results and like it or not, true or false, we all know this has already happened before for our seniors. Due to this reason you start paying extra respect for lecturers and being scared of them over the limit. 😛
And then the Admins, where when were at APIIT we had a very rude, unnecessary strict administration which we were really scared of thinking they would mess up our results or exams 😛 so we were acting like innocent mouses in front of them. lol 😀 Its actually an obvious reacting that comes from every single Final Year student knowing that you are going through the very final step and you have to be cool with everyone without making any issues which you know would bite you in the back 😛 !

The Insanity and Nonsense Blast !

So getting back to the stress, this one of the EPIC-EST outcomes of it in mostly every single student ! You may see some of your batch mates even your own self going completely insane due to the stress, where as start playing around nonsense even in the middle of all the hectic serious workload, randomly shouting out loud in the middle the class or the lab, running around, hurraaaying even for the tiniest thing, dancing in the middle of the lab and so on, oh yeah the list goes on… xD Specially I’m personally a lot experienced regarding this, where as I was one of those victims who had such side effects to the extreme level. Even today if you talk to any of my colleagues, they would tell you xD  😛
Oh yeah, so much of epic memories with that… 😉 and be warned child, your time is ahead of you ! 😛

So…

So this is some of the reality experience I had during my Final year Project when I was an undergraduate at University. Well of course this is totally based on my own personal experience at APIIT Sri Lanka, if you are a student from other University it would be different, but in common these facts are true for most of the undergrads. I’m just leaving these experiences in my blog for you guys out there, just to mark some of the unforgettable experience I had at my University days, hoping you would be able to gain something from them and add more of you own to it.
Well as now I am a graduate and working for some big a** corporate company I would never get the chance to go back to those amazing days, and someday you will also get to this point in your life, and make sure you wouldn’t regret the time you spent during the Final Year Project, the last few weeks at your University.
So get the maximum of it, help out your friends in possible ways without being selfish all the time, do not mess with the lecturers 😛 , take some risk, do something different for your final thesis, work yours a**es off, and play some random nonsense just to have fun and get rid of stress 😉 making some good memories ! 😀
Behold the Secret Recipe ! 😉

Good Luck for all you folks out there ! 😀 Have an EPIC time !

(Image Sources – Google, 2014)

Advertisements

Finally the long awaited Final Year Project Done ! :D

The FYP or the Final Year Project as they all call it at APIIT, is finally done for our batch  !8 Months of torture finally came to an end ! 😀 So i thought of leaving a small note on my Final Year Project.

The title of my Final year Project was “Augmented Reality based Product Identification and Advertising System”. Which is a system where users can identify Products or Advertisements using their mobile phones in real time.

Anyhow after going through weeks of sleepless nights, endless number of experimentations and self learning, I was able to develop and implement in a middle of huge amount of technological difficulties. I used SURF Feature Extraction Algorithm as the base Image Matching Algorithm for this System, even though this is the first time anyone in our University has used Computer Vision based algorithm for image matching as I have been told, due to the impossibility of it or may be even more because people actually haven’t looked into it properly.

Anyhow I may give a descriptional explanation on my FYP later, but for the moment, as leaving a note, I was able to successfully complete my FYP even though some of the objectives of the system could not be achieved, well not completely lets say, due to the technological difficulties or more over due to the time constrains. Now you must be wondering why am I blaming for the time constrains, well you would never understand that phrase unless you are an APIITian, because we all know the tough deadlines and submissions we get at APIIT, where as even for the Final Year Project, no matter what, you need to submit on the given date. Yes we do deal with extreme stressed up, packed up deadline submissions. Lemme give you a heads up, Final assignment Submissions, Final Exams, and after that within less than a month Final Year Project Submission.

Now you may say dafaq dude, less than a month is more than enough. Listen you bloody idiotic retard, this is the FYP we are talking about, which is not just another CRUD application or some lame-ass inventory control shit. We are suppose to research, self learn, experiment and innovate something under the topic which we have decided, that is the whole point of it. In mine i was never in to Image Processing, to be honest I haven’t even had any idea about Image Processing until i started researching for my FYP. And then imagine using all that research and developing something completely new out of all those theories that you self learn ! Yeah, enough of me boasting ! lol

We are suppose to do a complete extensive Documentation along with the given proper standards of APIIT, where as mine was 217 Pages, along with 37607 Words ! Yeah well more like I wrote my own personal Bible or something lol ! Yeah now you can imagine, think of it even typing such amount of words thinking from one’s head ? Yeah that is what am talking about. lol. Well not to mention the fact that when I get enthusiastic and passionate about something I could write a whole book about it. 😛

So the next step is the Final Presentation, which is due on next 20th ! Scares me when I even  think of it, but hoping for the best with the determination !

Woah ! What a feeling of relief ! 😀

Final Year Project Log – Image Matching Experiment using SURF Feature Extraction

This post is regarding my Final Year Project I’m working on for my degree in Software Engineering at APIIT, which I’m working on an Augmented Reality based Product Identification and Advertising System.

Through this post I’m keeping a log book of the experiments I’m running for my utilized Image Matching algorithm based on SURF Feature Extraction and Matching algorithm.
This post is no educational or knowledge source, just some post that I’m keeping online to mark the progress of my experiment.

Language – C#
API – EmguCV (C# Wrapper for OpenCV)

Log 1 – Successfully installed and configured EmguCV in the Laptop running Window 8 Pro and imported all the required dll files for the project solution in Visual Studio 2012.

Log 2 – Implemented Simple Image Matching code and was able to find the matching points based on Extracted Feature points of a given Source Image and a Model Image.

Model Image – the Model Image that you want to look for in other image sceneries.
Source Image – the actual scenery to look up for the given image.

Log 3 – Started SURF Experiment project solution and implemented the following functionality,

– Load the given set of images to the memory at Run time and their feature points will be extracted and saved in the Memory. This was done in order to make the execution, as in the matching process faster.

– Look up for the brand logo of a given Product Image by extracting the Feature points of the given image and matching them with the feature points of the existing brand logos.

Log 4 – Oki now the process does not seem to be working for images that are from other sources, rather than a model image captured from the actual scenery image.

The model Image or the brand logo image in this case has to be an image which is being captured from the same exact product image that we are giving in to the system. The matching process does not work for custom logo images which are from other sources. Now lets say if we download a logo image from the internet and add it to the logo image library and load it to the program, and I give the actual product image in order to find the matching brand logo, it would not give accurate result and catch the above given logo as the result.

Concluded Reason based on Knowledge – I guess this is because of the essence of the SURF Algorithm, frankly speaking its capable of detecting a given object from a scenery where the object actually includes in the scenery. And now if we apply it to this scenario, the given logo is from another source and its feature points, colors, pixels are different from the product image that we are going to identify, therefore the algorithm would not detect it as the result logo.

This could be a constraint, but it would not matter if I implement an option to let the admin user capture the exact logo from the given product image and store that logo in the Database ! 😀

Log 5 – The Important attributes in extracting the matching results from the Algorithm in Code,

Matrix<int> indices – Still have no idea, but it stores some X,Y points based on the matched points I suppose.
Matrix<byte> mask – Store the results of filtering the matched features and votes for the points given by the algorithm. This matrix exactly includes the number of matched feature points. 

The actual voting for matched feature points happens in here –

using (Matrix<float> dist = new Matrix<float>(observedDescriptors.Rows, k))
 {
 matcher.KnnMatch(observedDescriptors, indices, dist, k, null);
 mask = new Matrix<byte>(dist.Rows, 1);
 mask.SetValue(255);
 Features2DToolbox.VoteForUniqueness(dist, uniquenessThreshold, mask);
 }

And I have discovered that using those values, specially “mask ” matrix value, I could determine something like the percentage of the matching between two images which actually stores the voting results of the Feature point matching. And then I could take the highest matching points count and get the best match for identifying the product logo.

But there is a drawback in that when I actually executed the process, that is the SURF detector detects several matching feature points in a given Product Logo image and a Product Image, where sometimes it detects randomly more than the actual supposed result, which leads to incorrect results. Therefore I need to look for a better approach.

Looking for a Better Approach… Rather than counting the number of matching points…

Log 6 – I just figured out that In order to solve this I need to consider some factors regarding the area of the detected results, as in when the algorithm look for the product logo in the given product image, it specifically pinpoints to a specific area of the logo in the product image. If I could calculate that that determine it, BOOM ! its done !

Here are some of the factors I found and their samples,

Test Samples –

This is how the algorithm actually detects the logo in the given product Image,
Capture

As you can see in the above Image in the right side the UI displays the Logo image and in the left side it displays the given product Image. The dots represents the detected feature points of the both images and those lines in between the two images determines and maps the matching feature points of the two images. As in how it displays where the logo is detected in the given product Image.

Pretty cool eh ! 😀

Then when I started digging deeper I noticed that those mapped lines actually forms some kind of a polygon around the detected logo area in the product image. So I edited the code to draw a line around it.
Capture2

The for a clear view I painted the formed polygon, just for the sake of viewing ease.Capture3
Looks perfect eh ! 😉 Now this should lead me to something useful while determining the exact accurate result.

Chasing the Polygon………..

Log 7 – I noticed that the formed Polygon on incorrect results or i n those results where the logo can not be detected, takes a malformed shape. Such as below,
Capture4

Capture6

And on some of the matching it does not even draw out the polygon as an example,
Capture5

Now this seems to provide a great opportunity, as in if I could determine whether its a properly formed polygon or not and whether it is actually a polygon in the given matching result, then I could easily figure out the perfect accurate match.

This is where the Polygon is initiated from the Homography matrix,

#region draw the projected region on the image
 if (homography != null)
 { //draw a rectangle along the projected model
 Rectangle rect = modelImage.ROI;
 PointF[] pts = new PointF[] { 
 new PointF(rect.Left, rect.Bottom),
 new PointF(rect.Right, rect.Bottom),
 new PointF(rect.Right, rect.Top),
 new PointF(rect.Left, rect.Top)};
 homography.ProjectPoints(pts);
}

Log 8 – Right now at this point I am calculating the below values in order to determine the perfect match result of the product image’s logo,

  • Number of Matching points count
  • Area of the Polygon
  • Number of Matching points within the Polygon Area

based on these values of each and every matching circle i was able to determine the best matching result.

Log 9 – Right now at this point I’m going through a crisis issue where there is no possible way to determine a matching instance of when a user inserts a product image which is not available in the database to find the product logo. As in lets say the user inserts a product image where it’s product logo isn’t available in the database, right now there is no way to determine whether it could be found or not.

This is because of the fact that, even though the number of matching counts goes down, some other factor such as area of the polygon, or may be if the area of the polygon goes down the number of matching points could increase. This situation changes from one image to another unpredictably and of course I tried my best to track down a pattern for this, but it was also unsuccessful as it differs from one image to another ! 😦

 Suggested Solutions at the point –

Get rid of the process of Identifying the Brand Logo of a given product Image and directly move on to visual product identification. This could take a long time to give a result.

As you can see the reason why I came up with this, “brand Logo Recognition process” was to increase the speed of the product identification. There is a huge set of product images in the database which are related to each and every brand type. So rather than search through all the product images, what if I identify the brand type first and then search through only the products that falls under that brand type ? Which will definitely increase the speed of matching reduce unwanted time consumption in matching.

Right at this point I’m pretty confused about what I should do, but I may have to go through the above solution ! :\ Must contact the supervisor and assessor immediately.

Log 10 – I contacted my Assessor lecturer of my FYP and presented him this issue. He came up with an amazing idea of taking the percentage of detected feature points between the Model, Logo Image and the Scenery, Product Image. This was a lil confusing for me at once but then later only it triggered me ! 😀

Therefore following that lead, I took the percentage of the difference between the Logo and the Given Product Image at every circulation of the matching and kept that value for later use in order to determine which gives the best percentage.

 percentage = (( (double)result.modelDescriptors.Rows) / (double)result.observedDescriptors.Rows) * 100;

In the above code I get the percentage and store it with the index number of the corresponding Logo and Product.

Then at the end, the matching percentage has to be over 20% and the Polygon Area should not be 0 and the Number of the matches inside the polygon area has to be over 0, otherwise it would be identified as unidentifiable.

if (currentLargestPercentage <= 20)
 {
    if ((currentlargestArea == 0 && currentlargestMatchesInPolygonArea == 0))
    {
       MessageBox.Show("Sorry ! This can not be Identified ! :( ");
    }
    else
    {

    }
 }
 else
 {
    if (currentlargestMatchesCount > 10)
    {

    }
 }

Log 11 – Using the above found method I was able to successfully identify the Product images which can not be identified with the Logo Images in the database. But the problem is sometimes it doesn’t identify the products which can even be identifies with the product logo in the database 😦 ! I tried changing the matching percentage but nothing seems to be working, when I change it, the product images which can be identified doesn’t get identified and  the ones that can not be identified comes up with wrong matches. 

So now I’m in need of a new approach for this, something similar to the same method.

Log 12 – The I used “descriptors” of the model and the observed images, which has the computed values of the given image and the points locations because of its convenience, as it appeared to be it was holding some significant set of values. But later I found out there is not much of use of it in take the percentage so i thought of switching to the “vector of feature points” of both logo and product image, where as those vectors holds the values for the detected SURF Feature points. Therefore according to that,

 percentage = (((double)result.modelKeypoints.Size) / ((double)result.observedKeypoints.Size)) * 100;

So now this seems like a perfect match by getting the ration between the keypoints of the model image and observed image. And then I did some tuning in matching identification condition.

if ((currentlargestArea == 0 && 
currentlargestMatchesInPolygonArea == 0) ||
currentLargestPercentage <= 5)
 {
         MessageBox.Show("Sorry ! This can not be Identified ! :( ");
 }

Now this appears to be giving fair results even though it is not 100% accurate, but according to the time constraints I should not waste anymore time with the matching process.

Screw this torture, I finished developing and successfully Implemented ! PS – Based on the above experimentations and results ! 😉
Hope it may help any of you !
Cheers ! 😀