Assignment title: Information
Apply concepts of advanced software development and programming methods to computational problems; • [LO 2] Use advanced object oriented principles and programming techniques in software development; • [LO 3] Apply advanced logical and mathematical techniques in the development of software solutions. The objective of this assignment is, using good object oriented principles and practice, to design and implement a “Nearest Neighbour Search”, one of the most well celebrated algorithms in Computer Science, as well as to write a technical report that summarises your approach. You will use Nearest Neighbour Search (NNS) to unshuffle a shuffled image. More specifically, you are to: • Write a C++ program to restore a shuffled picture of the University of Lincoln logo Because images are 2D matrices, the implementation of the NNS algorithm should be based on the Matrix Class, developed in the workshops. The images provided to you are in .txt format. That is, each pixel is represented by a value from 0 – 255 representing a greyscale colour. A detailed presentation of the assignment and a full explanation of the NNS algorithm will take place in one of the lectures. Provided: .txt format shuffled image .txt format noisy image C++ code to read in the .txt format images C++ code to write your output into a .pgm format image .pgm images can be viewed with a variety of image editors, such as ‘IrfanView’ (http://www.irfanview.com) Submit: A C++ solution which unshuffles the shuffled image (as well as you can) This solution should be the complete VS project, allowing it to be opened and run in VS Your C++ solution should contain: Matrix class (containing: constructors, a destructor, operator overloads, matrix operations) Your C++ solution may also contain: BinaryImage class The unshuffled image A report detailing your code and solution to the problem. The report should also address the following question: Discuss the NNS algorithm and an example area of application. Your report must be NO MORE than 8 pages long and should contain the following sections:- a) Introduction: Your understanding of the aims of the problem. b) Methods: Design (e.g. the OO principles used, the interface of your library, that is, the .h file with Class definitions) and Pseudo-Code. c) Results: Evidence of your program running with the expected output. d) Discussion: Research on the topic specified above. e) A list of references used.