Convert 2D line plot image to numeric data; Python, PyQt
$100-200 USD
Terminado
Publicado hace casi 11 años
$100-200 USD
Pagado a la entrega
Hello experienced Python programmers!
I'd like have a tool that takes a 2D line plot picture as input then converts it to data in numeric array.
It would be ideal if everything can be done automagically. But realistically, it is ok that the tool asks user to manually specify some properties e.g. x_min, x_max, y_min, y_max lines in picture and their corresponding values.
I hope that the tool can detect data lines within the limit line area so that user can just pick which data line to be interpreted. It should also provide facility to preview interpreted data points over original plot and user can easily adjust them.
** Please review attached files describing the requirement **
Below is a sub-set of description.
Required functionality
-------------------------------
* Load plot image (JPEG, PNG) into GUI
* Image can be rotated
* Let user specify some properties such as
* X max limit line location (spin box and dragging the line on plot) and value
* X min limit line location (spin box and dragging the line on plot) and value
* Y max limit line location (spin box and dragging the line on plot) and value
* Y min limit line location (spin box and dragging the line on plot) and value
* data line title
* X axis title
* Y axis title
* Number of point to interpret for X and Y
* Detect data lines on plot
* Let user select which data line to process
* Display interpreted data in table
* Display interpreted data on plot
* Let user adjust interpreted data in table and on plot
* Export interpreted data as CSV formated text file
Example plots to be processed by the tool
-------------------------------------------------------------
See attached files.
Only 2D line rectangular plots are to be processed.
X values increase at constant interval.
You can assume that one data line have only one Y value for a given X value.
There could be mupltiple data lines in one plot with same or different line format.
Plots may contain annotations, legend, grid line, markers, spec lines, etc.
Example GUI of the tool
-----------------------------------
See attached files.
This is just an example. I hope you can design better easy-to-use GUI ;-)
Programming language and libraries to be used
--------------------------------------------------------------------
Main programming language: Python
GUI library: PyQt4
Other prefered libraries(if needed): Matplotlib, numpy, scipy, PIL
(You can use other libraries as needed)
Other requirements
----------------------------
Separate GUI part and core image/data processing part so that the core part can be re-used later with Web based GUI.
Try to follow PEP8 Style Guide for Python Code
Add reasonable amount of Docstrings and comments so that the project owner can maintain and further develop the code.
Implement Unit Test
Frequent communication; One line status update once in two days; describing which part you are working on.
What I provide as the project owner
---------------------------------------------------
Requirement (attached document)
Reward as agreed at the start of project (payment can be separated for milestones)
Feedback as the project progress
What you provide as a developer
-----------------------------------------------
Technical advice/corrections to requirement
Source code of the application
All the outcome of the project belong to the project owner.
Project time frame
---------------------------
I'd expect the project to be completed in 3 weeks.
1st week: Clarify requirements, agree the program structure and basic GUI
2nd week: Core functionalities implemented. Alpha version submitted. <-- 1st milestone payment (1/3 of reward)
3rd week: All functionalities implemented. Beta version submitted. Feedback/improvement implemented. Final version submitted. Project completed. <-- 2nd=Final milestone payment (2/3 of reward)
Hello! This is a very clear and individual (separate) project. I like it. Please, read a short summary in my profile. I have not any occupation at current time. Feel free to ask me what you are interested.