Register
Submit a solution
The challenge is finished.

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:

The client is offering the following goals:
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
- This uses results of 1. and 2. as input and produces matrices of transition/rotation/scaling/perspective.
4. UI to show the overlaid image of 2D image and transformed 3D model
- This should be a browser app.
 

Goal of this challenge

Overview of the tasks

Tasks 3

In this challenge, we will focus on the task 3 only. As we have obtained algorithms that can detect lines and curves in 2D images and 3D models separately through the previous contests. Now, we are going to match a 2D image and a 3D model with limited human effort.
Since the main purpose of the Subtask 3 is to carefully check whether the real product matches its CAD model, in this challenge, we assume
- The user will always provide an image with its corresponding 3D model.
- The user is willing to help.

Allowed Inputs

(1) The 2D image and the 3D object. They are guaranteed to be corresponded to each other.
(2) Camera calibration parameters.
(3) The results of Subtasks 1 and 2. You can also develop your own algorithms for the first two subtasks. If so, please document these parts as well.
(4) User Guidance. You may incorporate user guidance for a more accurate matching. While the accuracy is at certain level, we want to minimize the human effort and make the interaction as easy as possible. Therefore, in this step, you may want to develop some simple auxiliary UI.

- For example, the existing customer-owned application requires users to choose some pair of edges, one is from 2D and another is from 3D, and to try to find the best match with this help.
- As another possibly useful interaction, you may ask users to help you rotate the 3D model by an appropriate but approximate angle.

Required Output

(1) Transformation matrices including translation, rotation and scaling. These matrices should transform 3D model to match to the 2D image with specified Camera calibration parameter.
(2) Some visualization (could be a picture) to show the transformed 3D model overlaid with transparency on the 2D image.

Notes:

* It will be great if the visualization can enable users to perceive how much the image and model are matched and differences between them. Since the final goal is to serve results of contests as Web service, Web-based visualization is preferred, but it's NOT a priority.
* In the matching process, it’s expecting to utilize not only the lines, but also curves well.
* Although the output format is not specified, JSON is preferred. You can propose your own output format but you need to carefully document it.
 

Information of tasks 1 and 2

1. Detecting lines/curves in 2D image

Input - A 2D image of some object.
Output - Data of line and curves segments detected in the input image.
This has been done in the previous challenge.

2. Detecting lines/curves in 3D object

Input - A 3D object model file. (Wavefront obj format)
Output - Data of line and curves segments detected in the input model data.
This has been done in the other previous challenge.
 
We provide some public examples as well as the winning solutions of both previous contests. They can be downloaded after your registration. You can also develop your own line/curve detection methods for 2D images and 3D models. And if you have other brilliant ideas to directly match the image and object without line/curve detections, you can also try.
 

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%)

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.

3. Human Effort (20%)

- The human effort should be as little as possible.
- If user guidance is needed, the way to interact should be easy. For example, some simple auxiliary UI may help.
 
Note: We will mainly evaluate results based on the visualization results of subtask 3.

 

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.


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%
- Human Effort = 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. Generally, GNU License is not allowed in this challenge.
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.
- The review process with the client
In addition to the regular review process, the client will review submissions and make the final decision. Therefore, the review phase will take longer time than regular challenges.
- The previous challenges:

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. 
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.

ELIGIBLE EVENTS:

2017 TopCoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30056756