Bug 353789 - Add new tool to apply Lut3D on image [patch]
Summary: Add new tool to apply Lut3D on image [patch]
Status: RESOLVED FIXED
Alias: None
Product: digikam
Classification: Applications
Component: Plugin-Editor-3DLut (show other bugs)
Version: 4.13.0
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: Digikam Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-10-11 14:40 UTC by Andrej Krutak
Modified: 2022-01-14 03:36 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In: 5.0.0


Attachments
Implementation of Lut3D (created by git format-patch) (211.08 KB, patch)
2015-10-11 14:40 UTC, Andrej Krutak
Details
digiKam5-Lut3D-1.patch (158.12 KB, patch)
2015-12-10 21:35 UTC, Maik Qualmann
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Andrej Krutak 2015-10-11 14:40:57 UTC
Created attachment 94950 [details]
Implementation of Lut3D (created by git format-patch)

Lut3D tables can be used to change image colors in much more powerful way than curves. I created an initial implementation based on android code, including filters from there.

In future this could be used to support also Photoshop LUTs etc.

The patch is attached, should apply on v4.13.0.

PS: For the future, it'd be best to share the code with GIMP folks or something...
Comment 1 caulier.gilles 2015-10-11 16:48:07 UTC
Thanks to share this huge patch. Very interesting feature.

Unfortunaltly, this patch canot be applied to next 4.14.0 for KDE4 planed this evening. As 4.14.0 will be the last one for KDE4, so, this patch can be only applied for next digiKam 5.0.0 for KF5.

I will review your code, port to Qt5 and test...

Gilles Caulier
Comment 2 Andrej Krutak 2015-10-11 17:00:31 UTC
Ah, that's a pity :-( Anyhow, thanks for the porting.

The real functionality is in fact some 200-300 lines, but all the interface stuff around is a bit demanding for a newcomer (though in the end quite nice)... So I had the patch working for a few weeks now (seems stable), but had to rework it for batch conversion support (=>separate container, settings)...
Comment 3 caulier.gilles 2015-10-11 17:07:21 UTC
Ah yes, please adjust your code to support BQM. It's very important to see all image editor tool available in BQM. We plan to implement the feature to apply a set of adjustement done to an images to another one (workflow)

Gilles Caulier
Comment 4 Andrej Krutak 2015-10-11 18:44:54 UTC
If you mean that it should be visible in the 'Base Tools' tab of BQM, then that's already done (works similar to BW conversion)...

Only thing I had problem with was the update of the editor menu. digikamimageplugin_color_ui.rc is updated (incl. version bump), but for some reason I had to modify the file in ~/.kde/... manually. Maybe I just broke it during development, though...
Comment 5 caulier.gilles 2015-10-12 04:44:36 UTC
The menu update problem is due to increase the version ID of XML file of image editor.

But in  all case, this problem will disapear in Qt5 version, because the editor plugin structure will be removed, in favor to embed all tools directly in editor code. The goal is to reduce all KDE fingerprint in digiKam to improve portability outside Linux. In fact editor plugin structure have no sense, since plugins are not shared with others applications.

Gilles Caulier
Comment 6 Maik Qualmann 2015-12-10 21:35:09 UTC
Created attachment 95982 [details]
digiKam5-Lut3D-1.patch

I find this feature very interesting. I have the patch in a first version for testing to current digiKam5 ported and somewhat polished.

Maik
Comment 7 caulier.gilles 2015-12-11 04:56:48 UTC
Maik,

If the code can be compiled against  git/master, as we are in beta stage until sprint 2016, it's fine to apply it to repository. We have plenty of time to tune code until final 5.0.0

Gilles
Comment 8 Maik Qualmann 2015-12-11 07:08:31 UTC
Git commit f754229d9137b9801b2d41adb050f3bd11c98637 by Maik Qualmann.
Committed on 11/12/2015 at 07:06.
Pushed by mqualmann into branch 'master'.

apply patch #95982 from Andrej Krutak to add Lut3D tool in the editor and BQM
FIXED-IN: 5.0.0

M  +2    -1    NEWS
M  +1    -0    data/CMakeLists.txt
A  +7    -0    data/filters/CMakeLists.txt
A  +28   -0    data/filters/lut3d/CMakeLists.txt
A  +-    --    data/filters/lut3d/bleach.png
A  +-    --    data/filters/lut3d/blue_crush.png
A  +-    --    data/filters/lut3d/bw_contrast.png
A  +-    --    data/filters/lut3d/instant.png
A  +-    --    data/filters/lut3d/original.png
A  +-    --    data/filters/lut3d/punch.png
A  +-    --    data/filters/lut3d/vintage.png
A  +-    --    data/filters/lut3d/washout.png
A  +-    --    data/filters/lut3d/washout_color.png
A  +-    --    data/filters/lut3d/x_process.png
M  +1    -0    imageplugins/color/CMakeLists.txt
M  +2    -1    imageplugins/color/digikamimageplugin_color_ui.rc
M  +14   -0    imageplugins/color/imageplugin_color.cpp
M  +1    -0    imageplugins/color/imageplugin_color.h
A  +200  -0    imageplugins/color/lut3dtool.cpp     [License: GPL (v2+)]
A  +75   -0    imageplugins/color/lut3dtool.h     [License: GPL (v2+)]
M  +3    -0    libs/dimg/CMakeLists.txt
A  +63   -0    libs/dimg/filters/lut3d/lut3dcontainer.cpp     [License: GPL (v2+)]
A  +61   -0    libs/dimg/filters/lut3d/lut3dcontainer.h     [License: GPL (v2+)]
A  +321  -0    libs/dimg/filters/lut3d/lut3dfilter.cpp     [License: GPL (v2+)]
A  +92   -0    libs/dimg/filters/lut3d/lut3dfilter.h     [License: GPL (v2+)]
A  +235  -0    libs/dimg/filters/lut3d/lut3dsettings.cpp     [License: GPL (v2+)]
A  +76   -0    libs/dimg/filters/lut3d/lut3dsettings.h     [License: GPL (v2+)]
M  +1    -0    utilities/queuemanager/CMakeLists.txt
A  +126  -0    utilities/queuemanager/basetools/color/lut3d.cpp     [License: GPL (v2+)]
A  +72   -0    utilities/queuemanager/basetools/color/lut3d.h     [License: GPL (v2+)]
M  +2    -0    utilities/queuemanager/manager/batchtoolsmanager.cpp

http://commits.kde.org/digikam/f754229d9137b9801b2d41adb050f3bd11c98637
Comment 9 caulier.gilles 2015-12-12 08:52:00 UTC
Maik,

It miss versioning support with this 3D Lut filter. It's used by editor and BQM to register filters order/parameters used while to apply on image. These settings is pushed in XMP metadata.

Look like core/libs/dimg/filters/dimgfiltermanager.cpp do not register 3DLut.

In filter implementation readParameters() is not implemented...

Gilles
Comment 10 Maik Qualmann 2015-12-12 20:56:06 UTC
add versioning support for the 3D Lut filter
http://commits.kde.org/digikam/39f4312033ebbd3414dfc8484f2b2e3e6e6cfb6f
Comment 11 Maik Qualmann 2015-12-15 07:00:03 UTC
Git commit 537d7132117c804acc502f898ea95e588c20b20d by Maik Qualmann.
Committed on 15/12/2015 at 06:58.
Pushed by mqualmann into branch 'master'.

move Lut3D filter to the ColorFX filters

M  +0    -1    imageplugins/color/CMakeLists.txt
M  +1    -2    imageplugins/color/digikamimageplugin_color_ui.rc
M  +0    -14   imageplugins/color/imageplugin_color.cpp
M  +0    -1    imageplugins/color/imageplugin_color.h
D  +0    -201  imageplugins/color/lut3dtool.cpp
D  +0    -75   imageplugins/color/lut3dtool.h
M  +11   -1    imageplugins/filters/colorfxtool.cpp
M  +1    -0    imageplugins/filters/colorfxtool.h
M  +0    -3    libs/dimg/CMakeLists.txt
M  +0    -3    libs/dimg/filters/dimgfiltermanager.cpp
M  +270  -4    libs/dimg/filters/fx/colorfxfilter.cpp
M  +15   -8    libs/dimg/filters/fx/colorfxfilter.h
M  +171  -27   libs/dimg/filters/fx/colorfxsettings.cpp
M  +5    -1    libs/dimg/filters/fx/colorfxsettings.h
D  +0    -64   libs/dimg/filters/lut3d/lut3dcontainer.cpp
D  +0    -60   libs/dimg/filters/lut3d/lut3dcontainer.h
D  +0    -324  libs/dimg/filters/lut3d/lut3dfilter.cpp
D  +0    -94   libs/dimg/filters/lut3d/lut3dfilter.h
D  +0    -234  libs/dimg/filters/lut3d/lut3dsettings.cpp
D  +0    -77   libs/dimg/filters/lut3d/lut3dsettings.h
M  +0    -1    utilities/queuemanager/CMakeLists.txt
D  +0    -126  utilities/queuemanager/basetools/color/lut3d.cpp
D  +0    -72   utilities/queuemanager/basetools/color/lut3d.h
M  +11   -0    utilities/queuemanager/basetools/filters/colorfx.cpp
M  +0    -2    utilities/queuemanager/manager/batchtoolsmanager.cpp

http://commits.kde.org/digikam/537d7132117c804acc502f898ea95e588c20b20d