cadik / tms Goto Github PK
View Code? Open in Web Editor NEWTone Mapping Studio
License: GNU General Public License v2.0
Tone Mapping Studio
License: GNU General Public License v2.0
The gui part of the project (TMOgui) has been implemented in Qt3. We need to port it to Qt5.
Transformed images are saved with wrong histogram range. After transforming by some tone mapping operator, histogram range of image is set to interval <0,1>.
However, transform operators mostly do not output images in range <0,1>. This leads to changing of image luminance/color range, when it is being saved.
In TMOGui, user can change histogram to desired range and save image within that range. But no such option for changing histogram range is available in TMOCmd, which is also affected by this bug and it makes it unusable.
TMOGui is failing to launch - it's crashing on startup on Fedora 28 (with Cinnamon Desktop under X11 graphical session). Messages from systemd journal:
audit[30958]: ANOM_ABEND auid=1000 uid=1000 gid=1000 ses=6 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 pid=30958 comm="tmogui" exe="/home/.../tmogui" sig=11 res=1
kernel: traps: tmogui[30958] general protection ip:7fc4c8311f8d sp:7ffeb0d8d880 error:0 in libqt-mt.so.3.3.8[7fc4c7d0c000+863000]
systemd[1]: Started Process Core Dump (PID 30960/UID 0).
audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=systemd-coredump@1-30960-0 comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
systemd-coredump[30961]: Process 30958 (tmogui) of user 1000 dumped core.
Stack trace of thread 30958:
#0 0x00007fc4c8311f8d _ZL8ucstrcmpRK7QStringS1_ (libqt-mt.so.3)
#1 0x00007fc4c831bd49 _ZltRK7QStringS1_ (libqt-mt.so.3)
#2 0x00007fc4c59b2467 _ZNSt8_Rb_treeI7QStringSt4pairIKS0_St8functionIFSt10unique_ptrIN3cvv3gui7CallTabESt14default_deleteIS7_EENS5_4util9ReferenceINS5_4impl4CallEEEEEESt10_Select1stISI_ESt4lessIS0_ESaISI_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorISI_ERS2_ (libopencv_cvv.so.3.4)
#3 0x00007fc4c59adb79 _GLOBAL__sub_I_view_controller.cpp (libopencv_cvv.so.3.4)
#4 0x00007fc4c87fd51a n/a (n/a)
audit[1]: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=systemd-coredump@1-30960-0 comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
abrt-server[30985]: Deleting problem directory ccpp-2018-10-19-12:05:33.625842-30958 (dup of ccpp-2018-09-24-22:15:31.267173-20502)
abrt-server[30985]: Lock file '.lock' is locked by process 1960
abrt-notification[31024]: Process 20502 (tmogui) crashed in ucstrcmp(QString const&, QString const&)()
There is some "general protection" error in Qt library stack trace leads to OpenCV library.
I have following version of these packages:
qt3-devel-3.3.8b-74.fc28.x86_64
opencv-3.4.1-3.fc28.x86_64
(also core, devel and contrib)
TMOGui worked for me few months ago on Fedora 24 (with Cinnamon).
The default histogram view for LDR images should be linear.
Histogram construction (iterations) is wrong.
The function to open/save PPM file format needs to be implemented.
The function for loading/saving png files needs to be implemented.
As said in #83, plugins' output is expected to be in range [0,1] to get them correctly work with tmocmd
, otherwise result image has wrong luminance range.
More plugins does not respect that. There are some I have tested - name and output range:
Ward94: 0-1.8
CLAHE: 0-344
Biswas05: 0-2.3
Ancuti16: 0-255
Zhongping15: from 0-1 to 0-11.4
(Tested with image with input range 0-241.)
With OpenCV it is matter of calling function
cv::normalize(image, image, 0, 1, cv::NORM_MINMAX, image.type());
before writing result image to output.
For plugins which don't use OpenCV, it should be possible with help of minLum
and maxLum
from TMOImage.statistics
I guess.
Also it will be good to write some guideline for writing plugins and mention this output range there.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.