Giter Site home page Giter Site logo

kmr0877 / image-processing-with-opencv Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 15 KB

To read the given Sergei Prokudin Gorsky image file,perform simple mathematical computations on images and reconstruct using image pyramids and perform image adjustments such as improving contrast,brightness etc. and produce a clear image output

Home Page: https://en.wikipedia.org/wiki/Sergey_Prokudin-Gorsky

License: MIT License

Python 100.00%
image-processing opencv grayscale-images color-scheme rgb-color-converter python-3-5 numpy-library rgb-color contrast-enhancement brightness-control

image-processing-with-opencv's Introduction

Aims and Objective

Sergei Prokudin Gorsky(1863-1944) was a Russian photographer and chemist whose collection of colour photographs is the oldest surviving to this date. He used a camera that took a sequence of three black and white exposures using blue, red and green filters. By projecting the three images using colored light it was then possible to recover the original colours. See herefor more details. At the beginning of the 20th century, Prokudin-Gorsky embarked on a many year project to systematically document the life of the Russian Empire by means of the new colour imaging technology. He then took many of the resulting negatives with him on emigration following the revolution of 1917 and they were eventually purchased and digitizedby the US Library of Congress. The objective of this task is to produce high quality colour reconstructions from Prokudin-Gorsky's negatives using simple image processing techniques.

TASK_1

A program that takes any one of these files as an input and produces a corresponding colour image as output. To do this you should divide the original image into three parts and then align the second and third channels to the first, displaying the resulting offsets for each channel. A simple way to perform the alignment is by searching through all possible offsets in some suitable range (e.g. 20 pixels for low resolution images) and computing for each a score measuring the quality of the match. Three suitable metrics include sum of squared differences (SSD), sum of absolute differences (SAD) and the normalizedcross correlation (NCC).

TASK_2

Searching through all offsets can become computationally expensive for large resolution images. To speed up the search procedure you can use a so - called image pyramid. An image pyramid is essentially the image at multiple scales, with scales varying by a factor of two. Alignment can then be done sequentially, starting with the highest level and incrementally updating your estimates as you go down the pyramid.

TASK_3

Try to improve the visual quality of the results of the basic algorithm. Some possibilities include colour and contrast adjustments, using a more sophisticated alignment procedure and automatically removing borders.One possible method I implemented is mean filter to improvise the obtained image in task_1 and task_2.Several other techniques availbe and can be used to enhance the quality of the image.

Implementation and Design :

The entire implementation is implemented using python programming language and works for versions 2.7+ which also requires opencv and numpy libraries installed.

Software

Download OpenCV and read guided tutorial: http://opencv.org/

Format for Testing :

The following commands allows the user to test the implementation.

python imageprocessing.py IMAGE_FILE_NAME

Sample Interaction :

python imageprocessing.py devillers.jpg

Sample Image before Processing

stones

Image after processing pixel by pixel

screen shot 2017-08-24 at 11 50 20 am

image-processing-with-opencv's People

Contributors

kmr0877 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.