Skip to content
This repository has been archived by the owner on Apr 13, 2021. It is now read-only.
/ SIHR Public archive

Latest commit

 

History

History
98 lines (58 loc) · 7.03 KB

CONTRIBUTING.md

File metadata and controls

98 lines (58 loc) · 7.03 KB

Contributing

Maintenance GitHub last commit

TL;DR: send contributions through PRs. Please try to use matrix operations in your implementations. Create an issue for problems and support.

This document has the purpose of informing how to effectively contribute to this repository.

This repository (SIHR) is intented for reproduction and development of single image highlight removal methods, so the biggest challenge isn't even coding, rather, reading the related research papers and deciphering how to implement them.

So, please don't feel overwhelmed by the amount of minute detail on contributing, it's mostly to give an overview should you need additional information on general MATLAB/GNU Octave development.

There is a number of ways you can help, and it's not restricted to code contributions.

In the first section (below) I'll put down a few words on non-code contributions.

Note: since deep learning models typically require a whole project for a complete "reproducibility suite", these will not be initially accounted for in this repository. In addition, they are outside the current domain of application for these methods (image enhancement for visual display systems). On a future version, perhaps.

Call for collaboration

If you'd like to collaborate on a survey on this specific subject, please contact me. You can find contact information here. I have set up a SIHR interest group on Mendeley Mendeley for this purpose.

Issues

GitHub issues

Since we're a small community and this is a rather small repository, feel free to create an issue with any comments on bugs, improvements, compatibility problems, etc. and I will get to them eventually (or hopefully someone else will first).

Testing

As the methods are single-input, single-output, general testing and functionality verification is done by simply invoking the methods' functions with a valid input.

Additionally on a general note, I expect that new methods contributed fulfill the I_d = AuthorYEAR(I); command, I being any input image of numeric floating-point class single | double representing linear RGB values in [0, 1] and size m×n×3, m and n non-zero, non-singleton, positive integers, and I_d the corresponding diffuse image of same class, domain and dimension.

In short: double RGB image in, double RGB image out.

Note: there is a utils/automated_testing.m script to reproduce reported quality results. Be warned that Tan2005, Yoon2006 and Akashi2016 run very slowly on Octave (lots of iterations).

Submitting changes

Please send a pull request to the main repository. Please follow the coding conventions (below) to some extent and make sure all of your commits are restricted to either one method or one general modification per commit. Try to write a concise log message for the commits.

Coding conventions

The beauty in MATLAB/GNU Octave syntax is that there's nothing exquisite about it, it just stays out of your way in favor of mathematics-oriented programming. Just try to keep it tidy. And always favor matrix operations.

Some loose tips on formatting:

  1. On MATLAB:
    • Please use default smart identing settings. Apply in editor via Ctrl + I or ⌘ Cmd + I
      • Exception can be made for aligned comments, assignments and general data
    • Optionally, use MBeautifier
      • I recommend adding the provided shortcuts
      • To disable (for, e.g. same case as above), see the directives
  2. On Octave:

Some tips on matrix-vector coding:

A word on help text

Please follow the MATLAB basic structure for help text: Add Help for Your Program.

Octave provides additional stylistic guidelines: Help text.

A word on MATLAB ↔ Octave compatibility

Octave is "less compatible" with MATLAB than the inverse relation. Reason being that Octave is not merely an open-source copy of MATLAB and actually has its own language extensions.

See this wikibooks entry: MATLAB Programming/Differences between Octave and MATLAB.

My personal recommendation is to code in MATLAB-style syntax and then check Octave for functionality compatibility. In case of incompatibility, either change algorithmic/coding approach or implement the desired functionality from scratch.

You can use the utils folder for such eventual functions.

Code of conduct

Please be polite.

Contact

Vítor Ramos ORCID
E-mail: [email protected]1

1 +SIHR works, please append it so I know where you're coming from