Challenge Overview
Background
Fujitsu has an application that matches CAD data (blueprint) with the actual manufactured product to inspect if the product is built correctly - as shown below.
Since this application is built as Windows desktop application, the client wants Topcoder community to build Web based system using browser as UI.
Overall Objective
The customer wants Topcoder community to create a prototype which implements the core features of the existing application with Web technology in multiple challenges.
The following diagram shows an illustration of the prototype:
1. Algorithm and API to detect lines/curves in 2D images
- 2D image is a photo of a real product.
2. Algorithm and API to detect lines/curves in 3D model
- The model is a blueprint of the product.
- The format is Wavefront obj.
3. Algorithm and API to calculate transformation matrix of 3D model to match 2D image
- The format is Wavefront obj.
- This uses results of 1. and 2. as input and produces matrix of transition/rotation/scaling.
4. UI to show the overlaid image of 2D image and transformed 3D model
- This should be a browser app.
Goal of this challenge
The client is interested in matching a 2D image and a 3D model. One of the fundamental steps is to detect the line segments and curves for the later key-point matching process.
Input:
Input:
1. A JPEG image
Output:
1. [Recommended] A file containing all line segments. Each segment is described by 4 numerical values. “x1 y1 x2 y2”, separated by a single space.
2. [Recommended] A file containing all curve segments. Each curve is approximated by a sequence of line segments. “x1 y1 x2 y2 x3 y3 … xn yn”.
3. [Required] A JPEG image with lines and curves highlighted.
2. [Recommended] A file containing all curve segments. Each curve is approximated by a sequence of line segments. “x1 y1 x2 y2 x3 y3 … xn yn”.
3. [Required] A JPEG image with lines and curves highlighted.
The output format of the first two files is flexible. You can also propose your own output format but you need to carefully document it.
(Eventually, the algorithm will be provided as Web API. From a point of this view, JSON is preferable for output format. But it’s super optional.)
Note that the only the lines and curves being useful to the later matching process are important to us.
Lines/Curves Detection
Subsequent Matching Process (Later contest)
Subsequent Matching Process (Later contest)
Examples
Three examples showing results of the line detection by the existing application are as follows. The full set of example images can be downloaded from the attachment of this contest.
Example #1
Example #1
(input)
(output)
(output)
Example #2
(input)
(output)
(output)
Example #3
(input)
(output)
(output)
There are a few caveats in the above examples as follows:
(a) Curves are not detected in the examples because the application does not support it. The most concerned item in the requirements is to detect curves.
(b) Some lines are apparently noises. Obviously, less noise is the higher quality.
You will be judged on the quality of your ideas, the quality of your description of the ideas, and how much benefit it can provide for the client. The winner will be chosen by the most logical and convincing reasoning as to how and why the idea presented will meet the objective.
Note that, this contest will be judged subjectively by the client and Topcoder. However, the following criteria will largely be the basis for the judgement: (check Judging Criteria for more details)
Third-party assets used to build your item must be properly licensed or free for commercial use. MIT, some modified BSD, Apache 2 licenses are ok, but if a library is not commercial friendly you need to get our approval first.
Sufficient information regarding third-party assets must be present in your documentation. This includes the author, license info and a direct link to the asset online.
(c) Some lines shows insufficient detection.
(d) Some short lines are detected on an edge. It’s better an entire edge is detected as one solid line.
Judging Criteria
The submissions will be evaluated from different aspects:
1. Quality (60% = 20% + 30% + 10%)
- (Training Accuracy) Does it work perfectly on the public examples? (20%)
- (Testing Accuracy) Does it work reasonably well on the private testing images? (30%)
- (Robustness) Can your model work smoothly on different images with the same parameters (e.g., some thresholds)? Or, can your model automatically set the parameters (e.g., some thresholds) based on the input image? (10%)
- (Testing Accuracy) Does it work reasonably well on the private testing images? (30%)
- (Robustness) Can your model work smoothly on different images with the same parameters (e.g., some thresholds)? Or, can your model automatically set the parameters (e.g., some thresholds) based on the input image? (10%)
2. Readability (20%)
- Your solution should be documented well, including the algorithms, codes, scripts, and deployment instructions.
- If you have your own format to save the lines and curves, try to justify your choice.
- Self contained. For example, all technical terms should be well-defined.
- If you have your own format to save the lines and curves, try to justify your choice.
- Self contained. For example, all technical terms should be well-defined.
3. Innovativity (20%)
- Innovative algorithms and models are encouraged.
Requirements to Win a Prize
Final Submission:- Achieve a passing score in the top 2. See the “Judging Criteria” section above.
- Submit all codes & scripts, which can repeat your results and apply to new images.
- Submit a document up to 5 pages (2-4 pages are recommended) in word or PDF format to describe details of your algorithms, default parameter values if there is any in your model, your resources, your thought process, all useful links, and justify how your solution satisfies our judging criteria and goals.
- You are encouraged to submit the results based on the public examples.
- Submit all codes & scripts, which can repeat your results and apply to new images.
- Submit a document up to 5 pages (2-4 pages are recommended) in word or PDF format to describe details of your algorithms, default parameter values if there is any in your model, your resources, your thought process, all useful links, and justify how your solution satisfies our judging criteria and goals.
- You are encouraged to submit the results based on the public examples.
Evaluation Criteria
You will be judged on the quality of your ideas, the quality of your description of the ideas, and how much benefit it can provide for the client. The winner will be chosen by the most logical and convincing reasoning as to how and why the idea presented will meet the objective.Note that, this contest will be judged subjectively by the client and Topcoder. However, the following criteria will largely be the basis for the judgement: (check Judging Criteria for more details)
- Quality = 60%
- Readability = 20%
- Innovativity = 20%
- Readability = 20%
- Innovativity = 20%
Licenses & Attribution
Third-party assets used to build your item must be properly licensed or free for commercial use. MIT, some modified BSD, Apache 2 licenses are ok, but if a library is not commercial friendly you need to get our approval first.Sufficient information regarding third-party assets must be present in your documentation. This includes the author, license info and a direct link to the asset online.
Additional Information
This contest is not rated.Q&A
Feel free to ask questions by posting in the contest forum.Final Submission Guidelines
Your final submission should at least contain the following files.
- All codes & scripts to repeat your results and apply to new images.
- A document up to 5 pages (2-4 pages are recommended) in word or PDF format.
- All codes & scripts to repeat your results and apply to new images.
- A document up to 5 pages (2-4 pages are recommended) in word or PDF format.
1. Instructions about how to deploy your solution on a linux machine, including all dependencies.
2. Detailed descriptions of your algorithms and justifications of your choice.
3. Instructions about the parameters in your solution and how to tune these parameters, if there is any.
4. The formats of output files, if you have invented any new and more convienent ones.
2. Detailed descriptions of your algorithms and justifications of your choice.
3. Instructions about the parameters in your solution and how to tune these parameters, if there is any.
4. The formats of output files, if you have invented any new and more convienent ones.