1

I want to write a paper in the field of mechanical engineering. For the evaluation of my experiments, I would like to use image processing. When image processing software is used in my field of research, it is for the most part heavily based on or at least closely related to digital image correlation. However, in my particular case, I believe it is more appropriate not to rely on digital image correlation and solve the problem on my own using "classical" image processing. Using my hardly existent programming skills, I developed some python code and want to incorporate it into said paper. I should probably mention, that the code shall not be the focus of the (mostly experimental) paper and more of an "accessory".

Now, I have encountered a problem: I could not find many research papers in my field that got into detail with their self-written code, especially regarding image processing. Hence, unfortunately, there are few examples to learn from. Furthermore, I do not think that many of the readers of the paper will be familiar with image processing to a greater extent in the first place. However, in my opinion, just stating I developed some software and showing the results is not sufficient.

How much details on my code should I give? Is it already sufficient to show a flowchart and to briefly describe the software? Should I state which python libraries and modules I used? Are there some guidelines that a non-computer-scientist should use when describing software to non-computer-scientists? Does one of you have good examples? Unfortunately, as my programming "skills" are mostly self-taught and rather poor, I am afraid to just upload my code into a repository to "speak for itself" would neither be helpful for comprehension nor good for my reputation.

What do you think? I would very much appreciate all your ideas and opinions.

  • 1
    You should provide the source code, as well as the version numbers of all software and libraries you use. The source code is an accurate description of the processing you did, and the only way reviewers are able to evaluate if there are any errors. If you are unable to produce source code of sufficient quality, find someone who can improve it for you. But there is no need to be scared: researchers will not judge you so much on the "quality" of the code, as long as it is correct. – Louic Jun 22 '20 at 11:32
  • Here's a suggestion: don't make the paper about the code. You used an image processing package for Python (I'm guessing OpenCV?) and that's it. The purpose of the code was to access the functions that are in the Python package. For instance, many papers that use SIFT-based techniques for image processing will simply say just that (e.g. "the images were rectified using a SIFT-based algorithm"). – GuillaumeL Jun 23 '20 at 17:32
  • 1
    @GuillaumeL I had to do a bit more than just using OpenCV (although I relied on OpenCV to a large extent). I had to implement some of my own functions with certain criteria that need explanation. But I think you are right about just briefly brushing over or even not mentioning the functions that were used from OpenCV without further adaptations. – pbaer Jun 24 '20 at 5:44
  • I'm in the same situation (had to replace the algo used in a opencv based package because it was not robust to the type of images I use). My advisor suggested I briefly explain the changes, maybe add the code in the paper's supplement files, and think about publishing another paper that explains my changes in depth and benchmark my code vs the original. – GuillaumeL Jun 30 '20 at 13:27
2

Your paper should focus on your contribution to the field, not to the field of image processing (if I understand your question). Your paper will likely have some form of "approach" or "setup" section or something to the effect. If this is a novel algorithm, you may choose to describe it there. A common thing to use is a LaTeX "Algorithm" environment, and provide pseudocode. If the algorithm is very complex or detailed, consider breaking it into pieces. If it is truly novel, consider publishing it!

An alternative would be to have some way to publicly access the code, say github or your institution's personal websites, with an explanation there. Again, a pseudocode algorithm is probably sufficient.

If your paper is accepted but you are asked to revise the description of the code, do so according to the comments. Otherwise, unless there is a lot missing from the main paper's description of its contribution, your paper will not be rejected or accepted based on this detail.

  • Thank you very much for your input! My paper cannot contribute to the field of image processing, the solution I came up with is more convenient than digital image correlation in this particular case, but definitely not advanced enough to achieve a scientific delta in image processing. However, at least in my field, I have not yet found anything similar to my approach. I am torn between a pseudo-code and a flowchart. A flowchart could be easier to understand for a less experienced reader, but pseudo-code may provide more details. Should I consider both describing and uploading the code? – pbaer Jun 23 '20 at 6:20
  • 1
    I think that the better question to ask is this: consider your personal strengths. Can you, personally, describe your algorithm more clearly using pseudocode or a flowchart? Choose whichever you feel will be more clear given your skillset, and stick with that. I don't think it will otherwise matter. I'm certain that making the code freely available for download will also help people to learn from and expand upon your results, but it won't make or break the paper – Michael Stachowsky Jun 23 '20 at 14:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.