ruby-iup 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +97 -0
- data/doc/README +10 -0
- data/doc/build_install.txt +77 -0
- data/examples/README +16 -0
- data/examples/ctrl/cbox.rb +221 -0
- data/examples/ctrl/checkboard.rb +33 -0
- data/examples/ctrl/degrade.rb +73 -0
- data/examples/ctrl/example1.rb +53 -0
- data/examples/ctrl/example2.rb +39 -0
- data/examples/ctrl/iupcolorbar.rb +95 -0
- data/examples/ctrl/iupcolorbrowser.rb +45 -0
- data/examples/ctrl/iupdial.rb +117 -0
- data/examples/ctrl/iupgauge.rb +242 -0
- data/examples/ctrl/iupgetcolor.rb +8 -0
- data/examples/ctrl/iupgetparam.rb +62 -0
- data/examples/ctrl/iupglcanvas.rb +172 -0
- data/examples/ctrl/iupmask.rb +15 -0
- data/examples/ctrl/iupmatrix.rb +39 -0
- data/examples/ctrl/iupplot2.rb +603 -0
- data/examples/ctrl/iuptabs.rb +22 -0
- data/examples/ctrl/iuptree.rb +190 -0
- data/examples/ctrl/iupval.rb +71 -0
- data/examples/ctrl/numbering.rb +46 -0
- data/examples/ctrl/sample.rb +166 -0
- data/examples/dlg/iupalarm.rb +14 -0
- data/examples/dlg/iupfiledlg.rb +19 -0
- data/examples/dlg/iupgetfile.rb +19 -0
- data/examples/dlg/iuplistdialog.rb +26 -0
- data/examples/dlg/iupmessage.rb +5 -0
- data/examples/dlg/iupscanf.rb +17 -0
- data/examples/elem/iupbutton.rb +197 -0
- data/examples/elem/iupcanvas.rb +27 -0
- data/examples/elem/iupcanvas2.rb +113 -0
- data/examples/elem/iupcanvas3.rb +62 -0
- data/examples/elem/iupdialog.rb +71 -0
- data/examples/elem/iupdialog2.rb +25 -0
- data/examples/elem/iupfill.rb +51 -0
- data/examples/elem/iupframe.rb +25 -0
- data/examples/elem/iuphbox.rb +68 -0
- data/examples/elem/iupimage.rb +113 -0
- data/examples/elem/iupitem.rb +60 -0
- data/examples/elem/iuplabel.rb +57 -0
- data/examples/elem/iuplist.rb +41 -0
- data/examples/elem/iuplist2.rb +125 -0
- data/examples/elem/iupmenu.rb +32 -0
- data/examples/elem/iupmultiline.rb +24 -0
- data/examples/elem/iupmultiline2.rb +156 -0
- data/examples/elem/iupradio.rb +32 -0
- data/examples/elem/iupseparator.rb +81 -0
- data/examples/elem/iupsubmenu.rb +85 -0
- data/examples/elem/iuptext.rb +61 -0
- data/examples/elem/iuptimer.rb +36 -0
- data/examples/elem/iuptoggle.rb +110 -0
- data/examples/elem/iupvbox.rb +87 -0
- data/examples/elem/iupzbox.rb +60 -0
- data/examples/elem/mdisample.rb +376 -0
- data/examples/elem/progressbar.rb +294 -0
- data/examples/elem/scrollbar.rb +66 -0
- data/examples/elem/tray.rb +90 -0
- data/examples/func/iupgetattribute.rb +32 -0
- data/examples/func/iupidle.rb +48 -0
- data/ext/extconf.rb +27 -0
- data/ext/iup-linux/include/cd.h +494 -0
- data/ext/iup-linux/include/cd_canvas.hpp +358 -0
- data/ext/iup-linux/include/cd_old.h +158 -0
- data/ext/iup-linux/include/cd_private.h +362 -0
- data/ext/iup-linux/include/cdcgm.h +34 -0
- data/ext/iup-linux/include/cdclipbd.h +22 -0
- data/ext/iup-linux/include/cddbuf.h +23 -0
- data/ext/iup-linux/include/cddebug.h +24 -0
- data/ext/iup-linux/include/cddgn.h +23 -0
- data/ext/iup-linux/include/cddxf.h +22 -0
- data/ext/iup-linux/include/cdemf.h +22 -0
- data/ext/iup-linux/include/cdgdiplus.h +29 -0
- data/ext/iup-linux/include/cdimage.h +23 -0
- data/ext/iup-linux/include/cdirgb.h +30 -0
- data/ext/iup-linux/include/cdiup.h +22 -0
- data/ext/iup-linux/include/cdlua.h +39 -0
- data/ext/iup-linux/include/cdlua3_private.h +120 -0
- data/ext/iup-linux/include/cdlua5_private.h +141 -0
- data/ext/iup-linux/include/cdluaim.h +24 -0
- data/ext/iup-linux/include/cdluaiup.h +27 -0
- data/ext/iup-linux/include/cdluapdf.h +27 -0
- data/ext/iup-linux/include/cdmf.h +24 -0
- data/ext/iup-linux/include/cdmf_private.h +32 -0
- data/ext/iup-linux/include/cdnative.h +26 -0
- data/ext/iup-linux/include/cdpdf.h +38 -0
- data/ext/iup-linux/include/cdpicture.h +22 -0
- data/ext/iup-linux/include/cdprint.h +23 -0
- data/ext/iup-linux/include/cdps.h +37 -0
- data/ext/iup-linux/include/cdwmf.h +22 -0
- data/ext/iup-linux/include/im.h +282 -0
- data/ext/iup-linux/include/im_attrib.h +116 -0
- data/ext/iup-linux/include/im_attrib_flat.h +39 -0
- data/ext/iup-linux/include/im_binfile.h +214 -0
- data/ext/iup-linux/include/im_capture.h +365 -0
- data/ext/iup-linux/include/im_color.h +465 -0
- data/ext/iup-linux/include/im_colorhsi.h +61 -0
- data/ext/iup-linux/include/im_complex.h +160 -0
- data/ext/iup-linux/include/im_convert.h +127 -0
- data/ext/iup-linux/include/im_counter.h +69 -0
- data/ext/iup-linux/include/im_dib.h +195 -0
- data/ext/iup-linux/include/im_file.h +111 -0
- data/ext/iup-linux/include/im_format.h +79 -0
- data/ext/iup-linux/include/im_format_all.h +576 -0
- data/ext/iup-linux/include/im_format_avi.h +87 -0
- data/ext/iup-linux/include/im_format_ecw.h +93 -0
- data/ext/iup-linux/include/im_format_jp2.h +78 -0
- data/ext/iup-linux/include/im_format_raw.h +64 -0
- data/ext/iup-linux/include/im_format_wmv.h +100 -0
- data/ext/iup-linux/include/im_image.h +403 -0
- data/ext/iup-linux/include/im_kernel.h +315 -0
- data/ext/iup-linux/include/im_lib.h +191 -0
- data/ext/iup-linux/include/im_math.h +368 -0
- data/ext/iup-linux/include/im_math_op.h +219 -0
- data/ext/iup-linux/include/im_palette.h +172 -0
- data/ext/iup-linux/include/im_plus.h +73 -0
- data/ext/iup-linux/include/im_process.h +35 -0
- data/ext/iup-linux/include/im_process_ana.h +221 -0
- data/ext/iup-linux/include/im_process_glo.h +170 -0
- data/ext/iup-linux/include/im_process_loc.h +577 -0
- data/ext/iup-linux/include/im_process_pon.h +712 -0
- data/ext/iup-linux/include/im_raw.h +34 -0
- data/ext/iup-linux/include/im_util.h +277 -0
- data/ext/iup-linux/include/imlua.h +83 -0
- data/ext/iup-linux/include/iup.h +255 -0
- data/ext/iup-linux/include/iup_pplot.h +40 -0
- data/ext/iup-linux/include/iupcb.h +25 -0
- data/ext/iup-linux/include/iupcbox.h +23 -0
- data/ext/iup-linux/include/iupcbs.h +42 -0
- data/ext/iup-linux/include/iupcells.h +130 -0
- data/ext/iup-linux/include/iupcolorbar.h +126 -0
- data/ext/iup-linux/include/iupcompat.h +62 -0
- data/ext/iup-linux/include/iupcontrols.h +40 -0
- data/ext/iup-linux/include/iupcpi.h +76 -0
- data/ext/iup-linux/include/iupdef.h +520 -0
- data/ext/iup-linux/include/iupdial.h +64 -0
- data/ext/iup-linux/include/iupgauge.h +57 -0
- data/ext/iup-linux/include/iupgc.h +20 -0
- data/ext/iup-linux/include/iupgetparam.h +27 -0
- data/ext/iup-linux/include/iupgl.h +101 -0
- data/ext/iup-linux/include/iupim.h +21 -0
- data/ext/iup-linux/include/iupkey.h +290 -0
- data/ext/iup-linux/include/iuplua.h +41 -0
- data/ext/iup-linux/include/iuplua_pplot.h +26 -0
- data/ext/iup-linux/include/iupluacontrols.h +27 -0
- data/ext/iup-linux/include/iupluagl.h +26 -0
- data/ext/iup-linux/include/iupluaim.h +26 -0
- data/ext/iup-linux/include/iupluaole.h +26 -0
- data/ext/iup-linux/include/iupmask.h +52 -0
- data/ext/iup-linux/include/iupmatrix.h +69 -0
- data/ext/iup-linux/include/iupole.h +24 -0
- data/ext/iup-linux/include/iupsbox.h +20 -0
- data/ext/iup-linux/include/iupspeech.h +23 -0
- data/ext/iup-linux/include/iupspin.h +21 -0
- data/ext/iup-linux/include/iuptabs.h +79 -0
- data/ext/iup-linux/include/iuptree.h +93 -0
- data/ext/iup-linux/include/iupval.h +46 -0
- data/ext/iup-linux/include/lauxlib.h +174 -0
- data/ext/iup-linux/include/lua.h +388 -0
- data/ext/iup-linux/include/lua.hpp +9 -0
- data/ext/iup-linux/include/luaconf.h +763 -0
- data/ext/iup-linux/include/lualib.h +53 -0
- data/ext/iup-linux/include/old_im.h +59 -0
- data/ext/iup-linux/include/wd.h +78 -0
- data/ext/iup-linux/include/wd_old.h +85 -0
- data/ext/iup-linux/libcd.so +0 -0
- data/ext/iup-linux/libcdcontextplus.so +0 -0
- data/ext/iup-linux/libcdluacontextplus51.so +0 -0
- data/ext/iup-linux/libcdpdf.so +0 -0
- data/ext/iup-linux/libfreetype.so +0 -0
- data/ext/iup-linux/libim.so +0 -0
- data/ext/iup-linux/libim_fftw.so +0 -0
- data/ext/iup-linux/libim_jp2.so +0 -0
- data/ext/iup-linux/libim_process.so +0 -0
- data/ext/iup-linux/libiup.so +0 -0
- data/ext/iup-linux/libiup_pplot.so +0 -0
- data/ext/iup-linux/libiupcd.so +0 -0
- data/ext/iup-linux/libiupcontrols.so +0 -0
- data/ext/iup-linux/libiupgl.so +0 -0
- data/ext/iup-linux/libiupim.so +0 -0
- data/ext/iup-linux/libiupimglib.so +0 -0
- data/ext/iup-linux/libpdflib.so +0 -0
- data/ext/iup-win32/cd.dll +0 -0
- data/ext/iup-win32/cd.lib +0 -0
- data/ext/iup-win32/cdcontextplus.dll +0 -0
- data/ext/iup-win32/cdcontextplus.lib +0 -0
- data/ext/iup-win32/cdlua51.lib +0 -0
- data/ext/iup-win32/cdluacontextplus51.lib +0 -0
- data/ext/iup-win32/cdluaim51.lib +0 -0
- data/ext/iup-win32/cdluapdf51.lib +0 -0
- data/ext/iup-win32/cdpdf.dll +0 -0
- data/ext/iup-win32/cdpdf.lib +0 -0
- data/ext/iup-win32/freetype6.dll +0 -0
- data/ext/iup-win32/freetype6.lib +0 -0
- data/ext/iup-win32/im.dll +0 -0
- data/ext/iup-win32/im_avi.dll +0 -0
- data/ext/iup-win32/im_capture.dll +0 -0
- data/ext/iup-win32/im_ecw.dll +0 -0
- data/ext/iup-win32/im_fftw.dll +0 -0
- data/ext/iup-win32/im_jp2.dll +0 -0
- data/ext/iup-win32/im_process.dll +0 -0
- data/ext/iup-win32/im_wmv.dll +0 -0
- data/ext/iup-win32/include/cd.h +494 -0
- data/ext/iup-win32/include/cd_canvas.hpp +358 -0
- data/ext/iup-win32/include/cd_old.h +158 -0
- data/ext/iup-win32/include/cd_private.h +362 -0
- data/ext/iup-win32/include/cdcgm.h +34 -0
- data/ext/iup-win32/include/cdclipbd.h +22 -0
- data/ext/iup-win32/include/cddbuf.h +23 -0
- data/ext/iup-win32/include/cddebug.h +24 -0
- data/ext/iup-win32/include/cddgn.h +23 -0
- data/ext/iup-win32/include/cddxf.h +22 -0
- data/ext/iup-win32/include/cdemf.h +22 -0
- data/ext/iup-win32/include/cdgdiplus.h +29 -0
- data/ext/iup-win32/include/cdimage.h +23 -0
- data/ext/iup-win32/include/cdirgb.h +30 -0
- data/ext/iup-win32/include/cdiup.h +22 -0
- data/ext/iup-win32/include/cdlua.h +39 -0
- data/ext/iup-win32/include/cdlua3_private.h +120 -0
- data/ext/iup-win32/include/cdlua5_private.h +141 -0
- data/ext/iup-win32/include/cdluaim.h +24 -0
- data/ext/iup-win32/include/cdluaiup.h +27 -0
- data/ext/iup-win32/include/cdluapdf.h +27 -0
- data/ext/iup-win32/include/cdmf.h +24 -0
- data/ext/iup-win32/include/cdmf_private.h +32 -0
- data/ext/iup-win32/include/cdnative.h +26 -0
- data/ext/iup-win32/include/cdpdf.h +38 -0
- data/ext/iup-win32/include/cdpicture.h +22 -0
- data/ext/iup-win32/include/cdprint.h +23 -0
- data/ext/iup-win32/include/cdps.h +37 -0
- data/ext/iup-win32/include/cdwmf.h +22 -0
- data/ext/iup-win32/include/iup.h +255 -0
- data/ext/iup-win32/include/iup_pplot.h +40 -0
- data/ext/iup-win32/include/iupcb.h +25 -0
- data/ext/iup-win32/include/iupcbox.h +23 -0
- data/ext/iup-win32/include/iupcbs.h +42 -0
- data/ext/iup-win32/include/iupcells.h +130 -0
- data/ext/iup-win32/include/iupcolorbar.h +126 -0
- data/ext/iup-win32/include/iupcompat.h +62 -0
- data/ext/iup-win32/include/iupcontrols.h +40 -0
- data/ext/iup-win32/include/iupcpi.h +76 -0
- data/ext/iup-win32/include/iupdef.h +520 -0
- data/ext/iup-win32/include/iupdial.h +64 -0
- data/ext/iup-win32/include/iupgauge.h +57 -0
- data/ext/iup-win32/include/iupgc.h +20 -0
- data/ext/iup-win32/include/iupgetparam.h +27 -0
- data/ext/iup-win32/include/iupgl.h +101 -0
- data/ext/iup-win32/include/iupim.h +21 -0
- data/ext/iup-win32/include/iupkey.h +290 -0
- data/ext/iup-win32/include/iuplua.h +41 -0
- data/ext/iup-win32/include/iuplua_pplot.h +26 -0
- data/ext/iup-win32/include/iupluacontrols.h +27 -0
- data/ext/iup-win32/include/iupluagl.h +26 -0
- data/ext/iup-win32/include/iupluaim.h +26 -0
- data/ext/iup-win32/include/iupluaole.h +26 -0
- data/ext/iup-win32/include/iupmask.h +52 -0
- data/ext/iup-win32/include/iupmatrix.h +69 -0
- data/ext/iup-win32/include/iupole.h +24 -0
- data/ext/iup-win32/include/iupsbox.h +20 -0
- data/ext/iup-win32/include/iupspeech.h +23 -0
- data/ext/iup-win32/include/iupspin.h +21 -0
- data/ext/iup-win32/include/iuptabs.h +79 -0
- data/ext/iup-win32/include/iuptree.h +93 -0
- data/ext/iup-win32/include/iupval.h +46 -0
- data/ext/iup-win32/include/wd.h +78 -0
- data/ext/iup-win32/include/wd_old.h +85 -0
- data/ext/iup-win32/iup.dll +0 -0
- data/ext/iup-win32/iup.lib +0 -0
- data/ext/iup-win32/iup_pplot.dll +0 -0
- data/ext/iup-win32/iup_pplot.lib +0 -0
- data/ext/iup-win32/iupcd.dll +0 -0
- data/ext/iup-win32/iupcd.lib +0 -0
- data/ext/iup-win32/iupcontrols.dll +0 -0
- data/ext/iup-win32/iupcontrols.lib +0 -0
- data/ext/iup-win32/iupgl.dll +0 -0
- data/ext/iup-win32/iupgl.lib +0 -0
- data/ext/iup-win32/iupim.dll +0 -0
- data/ext/iup-win32/iupim.lib +0 -0
- data/ext/iup-win32/iupimglib.dll +0 -0
- data/ext/iup-win32/iupimglib.lib +0 -0
- data/ext/iup-win32/iuplua51.lib +0 -0
- data/ext/iup-win32/iuplua_pplot51.lib +0 -0
- data/ext/iup-win32/iupluacd51.lib +0 -0
- data/ext/iup-win32/iupluacontrols51.lib +0 -0
- data/ext/iup-win32/iupluagl51.lib +0 -0
- data/ext/iup-win32/iupluaim51.lib +0 -0
- data/ext/iup-win32/iupluaimglib51.lib +0 -0
- data/ext/iup-win32/iupluaole51.lib +0 -0
- data/ext/iup-win32/iupole.dll +0 -0
- data/ext/iup-win32/iupole.lib +0 -0
- data/ext/iup-win32/iupstub.lib +0 -0
- data/ext/iup-win32/pdflib.dll +0 -0
- data/ext/iup-win32/pdflib.lib +0 -0
- data/ext/iup.c +1261 -0
- data/ext/mkrf_conf.rb +72 -0
- data/ext/rb_cd.h +1525 -0
- data/ext/rb_iup.h +2446 -0
- data/ext/rb_iup_pplot.h +129 -0
- data/ext/rb_iupcb.h +13 -0
- data/ext/rb_iupcbox.h +40 -0
- data/ext/rb_iupcells.h +15 -0
- data/ext/rb_iupcolorbar.h +17 -0
- data/ext/rb_iupcompat.h +237 -0
- data/ext/rb_iupcontrols.h +28 -0
- data/ext/rb_iupdef.h +3 -0
- data/ext/rb_iupdial.h +24 -0
- data/ext/rb_iupgauge.h +15 -0
- data/ext/rb_iupgc.h +18 -0
- data/ext/rb_iupgetparam.h +72 -0
- data/ext/rb_iupgl.h +58 -0
- data/ext/rb_iupim.h +25 -0
- data/ext/rb_iupmask.h +189 -0
- data/ext/rb_iupmatrix.h +80 -0
- data/ext/rb_iupole.h +24 -0
- data/ext/rb_iupsbox.h +23 -0
- data/ext/rb_iupspeech.h +25 -0
- data/ext/rb_iupspin.h +29 -0
- data/ext/rb_iuptabs.h +29 -0
- data/ext/rb_iuptree.h +94 -0
- data/ext/rb_iupval.h +24 -0
- data/lib/README +1 -0
- metadata +391 -0
@@ -0,0 +1,712 @@
|
|
1
|
+
/** \file
|
2
|
+
* \brief Image Processing - Pontual Operations
|
3
|
+
*
|
4
|
+
* See Copyright Notice in im_lib.h
|
5
|
+
*/
|
6
|
+
|
7
|
+
#ifndef __IM_PROCESS_PON_H
|
8
|
+
#define __IM_PROCESS_PON_H
|
9
|
+
|
10
|
+
#include "im_image.h"
|
11
|
+
|
12
|
+
#if defined(__cplusplus)
|
13
|
+
extern "C" {
|
14
|
+
#endif
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
/** \defgroup arithm Arithmetic Operations
|
19
|
+
* \par
|
20
|
+
* Simple math operations for images.
|
21
|
+
* \par
|
22
|
+
* See \ref im_process_pon.h
|
23
|
+
* \ingroup process */
|
24
|
+
|
25
|
+
/** Unary Arithmetic Operations.
|
26
|
+
* Inverse and log may lead to math exceptions.
|
27
|
+
* \ingroup arithm */
|
28
|
+
enum imUnaryOp {
|
29
|
+
IM_UN_EQL, /**< equal = a */
|
30
|
+
IM_UN_ABS, /**< abssolute = |a| */
|
31
|
+
IM_UN_LESS, /**< less = -a */
|
32
|
+
IM_UN_INC, /**< increment += a */
|
33
|
+
IM_UN_INV, /**< invert = 1/a (#) */
|
34
|
+
IM_UN_SQR, /**< square = a*a */
|
35
|
+
IM_UN_SQRT, /**< square root = a^(1/2) */
|
36
|
+
IM_UN_LOG, /**< natural logarithm = ln(a) (#) */
|
37
|
+
IM_UN_EXP, /**< exponential = exp(a) */
|
38
|
+
IM_UN_SIN, /**< sine = sin(a) */
|
39
|
+
IM_UN_COS, /**< cosine = cos(a) */
|
40
|
+
IM_UN_CONJ, /**< complex conjugate = ar - ai*i */
|
41
|
+
IM_UN_CPXNORM /**< complex normalization by magnitude = a / cpxmag(a) */
|
42
|
+
};
|
43
|
+
|
44
|
+
/** Apply an arithmetic unary operation. \n
|
45
|
+
* Can be done in place, images must match size, does not need to match type.
|
46
|
+
*
|
47
|
+
* \verbatim im.ProcessUnArithmeticOp(src_image: imImage, dst_image: imImage, op: number) [in Lua 5] \endverbatim
|
48
|
+
* \verbatim im.ProcessUnArithmeticOpNew(image: imImage, op: number) -> new_image: imImage [in Lua 5] \endverbatim
|
49
|
+
* \ingroup arithm */
|
50
|
+
void imProcessUnArithmeticOp(const imImage* src_image, imImage* dst_image, int op);
|
51
|
+
|
52
|
+
/** Binary Arithmetic Operations.
|
53
|
+
* Inverse and log may lead to math exceptions.
|
54
|
+
* \ingroup arithm */
|
55
|
+
enum imBinaryOp {
|
56
|
+
IM_BIN_ADD, /**< add = a+b */
|
57
|
+
IM_BIN_SUB, /**< subtract = a-b */
|
58
|
+
IM_BIN_MUL, /**< multiply = a*b */
|
59
|
+
IM_BIN_DIV, /**< divide = a/b (#) */
|
60
|
+
IM_BIN_DIFF, /**< difference = |a-b| */
|
61
|
+
IM_BIN_POW, /**< power = a^b */
|
62
|
+
IM_BIN_MIN, /**< minimum = (a < b)? a: b */
|
63
|
+
IM_BIN_MAX /**< maximum = (a > b)? a: b */
|
64
|
+
};
|
65
|
+
|
66
|
+
/** Apply a binary arithmetic operation. \n
|
67
|
+
* Can be done in place, images must match size. \n
|
68
|
+
* Source images must match type, destiny image can be several types depending on source: \n
|
69
|
+
* \li byte -> byte, ushort, int, float
|
70
|
+
* \li ushort -> ushort, int, float
|
71
|
+
* \li int -> int, float
|
72
|
+
* \li float -> float
|
73
|
+
* \li complex -> complex
|
74
|
+
* One exception is that you can combine complex with float resulting complex.
|
75
|
+
*
|
76
|
+
* \verbatim im.ProcessArithmeticOp(src_image1: imImage, src_image2: imImage, dst_image: imImage, op: number) [in Lua 5] \endverbatim
|
77
|
+
* \verbatim im.ProcessArithmeticOpNew(image1: imImage, image2: imImage, op: number) -> new_image: imImage [in Lua 5] \endverbatim
|
78
|
+
* The New function will create a new image of the same type of the source images.
|
79
|
+
* \ingroup arithm */
|
80
|
+
void imProcessArithmeticOp(const imImage* src_image1, const imImage* src_image2, imImage* dst_image, int op);
|
81
|
+
|
82
|
+
/** Apply a binary arithmetic operation with a constant value. \n
|
83
|
+
* Can be done in place, images must match size. \n
|
84
|
+
* Destiny image can be several types depending on source: \n
|
85
|
+
* \li byte -> byte, ushort, int, float
|
86
|
+
* \li ushort -> byte, ushort, int, float
|
87
|
+
* \li int -> byte, ushort, int, float
|
88
|
+
* \li float -> float
|
89
|
+
* \li complex -> complex
|
90
|
+
* The constant value is type casted to an apropriate type before the operation.
|
91
|
+
*
|
92
|
+
* \verbatim im.ProcessArithmeticConstOp(src_image: imImage, src_const: number, dst_image: imImage, op: number) [in Lua 5] \endverbatim
|
93
|
+
* \verbatim im.ProcessArithmeticConstOpNew(image: imImage, src_const: number, op: number) -> new_image: imImage [in Lua 5] \endverbatim
|
94
|
+
* \ingroup arithm */
|
95
|
+
void imProcessArithmeticConstOp(const imImage* src_image, float src_const, imImage* dst_image, int op);
|
96
|
+
|
97
|
+
/** Blend two images using an alpha value = [a * alpha + b * (1 - alpha)]. \n
|
98
|
+
* Can be done in place, images must match size and type. \n
|
99
|
+
* alpha value must be in the interval [0.0 - 1.0].
|
100
|
+
*
|
101
|
+
* \verbatim im.ProcessBlendConst(src_image1: imImage, src_image2: imImage, dst_image: imImage, alpha: number) [in Lua 5] \endverbatim
|
102
|
+
* \verbatim im.ProcessBlendConstNew(image1: imImage, image2: imImage, alpha: number) -> new_image: imImage [in Lua 5] \endverbatim
|
103
|
+
* \ingroup arithm */
|
104
|
+
void imProcessBlendConst(const imImage* src_image1, const imImage* src_image2, imImage* dst_image, float alpha);
|
105
|
+
|
106
|
+
/** Blend two images using an alpha channel = [a * alpha + b * (1 - alpha)]. \n
|
107
|
+
* Can be done in place, images must match size and type. \n
|
108
|
+
* alpha_image must have the same data type except for complex images that must be float, and color_space must be IM_GRAY.
|
109
|
+
* integer alpha values must be:
|
110
|
+
\verbatim
|
111
|
+
0 - 255 IM_BYTE
|
112
|
+
0 - 65535 IM_USHORT
|
113
|
+
0 - 2147483647 IM_INT
|
114
|
+
\endverbatim
|
115
|
+
* that will be normalized to 0 - 1.
|
116
|
+
* \verbatim im.ProcessBlend(src_image1: imImage, src_image2: imImage, alpha_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
|
117
|
+
* \verbatim im.ProcessBlendNew(image1: imImage, image2: imImage, alpha_image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
|
118
|
+
* \ingroup arithm */
|
119
|
+
void imProcessBlend(const imImage* src_image1, const imImage* src_image2, const imImage* alpha_image, imImage* dst_image);
|
120
|
+
|
121
|
+
/** Split a complex image into two images with real and imaginary parts \n
|
122
|
+
* or magnitude and phase parts (polar). \n
|
123
|
+
* Source image must be IM_CFLOAT, destiny images must be IM_FLOAT.
|
124
|
+
*
|
125
|
+
* \verbatim im.ProcessSplitComplex(src_image: imImage, dst_image1: imImage, dst_image2: imImage, do_polar: boolean) [in Lua 5] \endverbatim
|
126
|
+
* \verbatim im.ProcessSplitComplexNew(image: imImage, do_polar: boolean) -> dst_image1: imImage, dst_image2: imImage [in Lua 5] \endverbatim
|
127
|
+
* \ingroup arithm */
|
128
|
+
void imProcessSplitComplex(const imImage* src_image, imImage* dst_image1, imImage* dst_image2, int do_polar);
|
129
|
+
|
130
|
+
/** Merges two images as the real and imaginary parts of a complex image, \n
|
131
|
+
* or as magnitude and phase parts (polar = 1). \n
|
132
|
+
* Source images must be IM_FLOAT, destiny image must be IM_CFLOAT.
|
133
|
+
*
|
134
|
+
* \verbatim im.ProcessMergeComplex(src_image1: imImage, src_image2: imImage, dst_image: imImage) [in Lua 5] \endverbatim
|
135
|
+
* \verbatim im.ProcessMergeComplexNew(image1: imImage, image2: imImage) -> new_image: imImage [in Lua 5] \endverbatim
|
136
|
+
* \ingroup arithm */
|
137
|
+
void imProcessMergeComplex(const imImage* src_image1, const imImage* src_image2, imImage* dst_image, int polar);
|
138
|
+
|
139
|
+
/** Calculates the mean of multiple images. \n
|
140
|
+
* Images must match size and type.
|
141
|
+
*
|
142
|
+
* \verbatim im.ProcessMultipleMean(src_image_list: table of imImage, dst_image: imImage) [in Lua 5] \endverbatim
|
143
|
+
* \verbatim im.ProcessMultipleMeanNew(src_image_list: table of imImage) -> new_image: imImage [in Lua 5] \endverbatim
|
144
|
+
* \ingroup arithm */
|
145
|
+
void imProcessMultipleMean(const imImage** src_image_list, int src_image_count, imImage* dst_image);
|
146
|
+
|
147
|
+
/** Calculates the standard deviation of multiple images. \n
|
148
|
+
* Images must match size and type. Use \ref imProcessMultipleMean to calculate the mean_image.
|
149
|
+
*
|
150
|
+
* \verbatim im.ProcessMultipleStdDev(src_image_list: table of imImage, mean_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
|
151
|
+
* \verbatim im.ProcessMultipleStdDevNew(src_image_list: table of imImage, mean_image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
|
152
|
+
* \ingroup arithm */
|
153
|
+
void imProcessMultipleStdDev(const imImage** src_image_list, int src_image_count, const imImage *mean_image, imImage* dst_image);
|
154
|
+
|
155
|
+
/** Calculates the auto-covariance of an image with the mean of a set of images. \n
|
156
|
+
* Images must match size and type. Returns zero if the counter aborted. \n
|
157
|
+
* Destiny is IM_FLOAT.
|
158
|
+
*
|
159
|
+
* \verbatim im.ProcessAutoCovariance(src_image: imImage, mean_image: imImage, dst_image: imImage) -> counter: boolean [in Lua 5] \endverbatim
|
160
|
+
* \verbatim im.ProcessAutoCovarianceNew(src_image: imImage, mean_image: imImage) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
161
|
+
* \ingroup arithm */
|
162
|
+
int imProcessAutoCovariance(const imImage* src_image, const imImage* mean_image, imImage* dst_image);
|
163
|
+
|
164
|
+
/** Multiplies the conjugate of one complex image with another complex image. \n
|
165
|
+
* Images must match size. Conj(img1) * img2 \n
|
166
|
+
* Can be done in-place.
|
167
|
+
*
|
168
|
+
* \verbatim im.ProcessMultiplyConj(src_image1: imImage, src_image2: imImage, dst_image: imImage) [in Lua 5] \endverbatim
|
169
|
+
* \verbatim im.ProcessMultiplyConjNew(src_image1: imImage, src_image2: imImage) -> new_image: imImage [in Lua 5] \endverbatim
|
170
|
+
* \ingroup arithm */
|
171
|
+
void imProcessMultiplyConj(const imImage* src_image1, const imImage* src_image2, imImage* dst_image);
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
/** \defgroup quantize Additional Image Quantization Operations
|
176
|
+
* \par
|
177
|
+
* Additionally operations to the \ref imConvertColorSpace function.
|
178
|
+
* \par
|
179
|
+
* See \ref im_process_pon.h
|
180
|
+
* \ingroup process */
|
181
|
+
|
182
|
+
/** Converts a RGB image to a MAP image using uniform quantization
|
183
|
+
* with an optional 8x8 ordered dither. The RGB image must have data type IM_BYTE.
|
184
|
+
*
|
185
|
+
* \verbatim im.ProcessQuantizeRGBUniform(src_image: imImage, dst_image: imImage, do_dither: boolean) [in Lua 5] \endverbatim
|
186
|
+
* \verbatim im.ProcessQuantizeRGBUniformNew(src_image: imImage, do_dither: boolean) -> new_image: imImage [in Lua 5] \endverbatim
|
187
|
+
* \ingroup quantize */
|
188
|
+
void imProcessQuantizeRGBUniform(const imImage* src_image, imImage* dst_image, int do_dither);
|
189
|
+
|
190
|
+
/** Quantizes a gray scale image in less that 256 grays using uniform quantization. \n
|
191
|
+
* Both images must be IM_BYTE/IM_GRAY. Can be done in place.
|
192
|
+
*
|
193
|
+
* \verbatim im.ProcessQuantizeGrayUniform(src_image: imImage, dst_image: imImage, grays: number) [in Lua 5] \endverbatim
|
194
|
+
* \verbatim im.ProcessQuantizeGrayUniformNew(src_image: imImage, grays: number) -> new_image: imImage [in Lua 5] \endverbatim
|
195
|
+
* \ingroup quantize */
|
196
|
+
void imProcessQuantizeGrayUniform(const imImage* src_image, imImage* dst_image, int grays);
|
197
|
+
|
198
|
+
|
199
|
+
|
200
|
+
/** \defgroup histo Histogram Based Operations
|
201
|
+
* \par
|
202
|
+
* See \ref im_process_pon.h
|
203
|
+
* \ingroup process */
|
204
|
+
|
205
|
+
/** Performs an histogram expansion based on a percentage of the number of pixels. \n
|
206
|
+
* Percentage defines an amount of pixels to include at the lowest level and at the highest level.
|
207
|
+
* If its is zero only empty counts of the histogram will be considered. \n
|
208
|
+
* Images must be IM_BYTE/(IM_RGB or IM_GRAY). Can be done in place. \n
|
209
|
+
* To expand the gammut without using the histogram, by just specifing the lowest and highest levels
|
210
|
+
* use the \ref IM_GAMUT_EXPAND tone gammut operation (\ref imProcessToneGamut).
|
211
|
+
*
|
212
|
+
* \verbatim im.ProcessExpandHistogram(src_image: imImage, dst_image: imImage, percent: number) [in Lua 5] \endverbatim
|
213
|
+
* \verbatim im.ProcessExpandHistogramNew(src_image: imImage, percent: number) -> new_image: imImage [in Lua 5] \endverbatim
|
214
|
+
* \ingroup histo */
|
215
|
+
void imProcessExpandHistogram(const imImage* src_image, imImage* dst_image, float percent);
|
216
|
+
|
217
|
+
/** Performs an histogram equalization. \n
|
218
|
+
* Images must be IM_BYTE/(IM_RGB or IM_GRAY). Can be done in place.
|
219
|
+
*
|
220
|
+
* \verbatim im.ProcessEqualizeHistogram(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
|
221
|
+
* \verbatim im.ProcessEqualizeHistogramNew(src_image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
|
222
|
+
* \ingroup histo */
|
223
|
+
void imProcessEqualizeHistogram(const imImage* src_image, imImage* dst_image);
|
224
|
+
|
225
|
+
|
226
|
+
|
227
|
+
/** \defgroup colorproc Color Processing Operations
|
228
|
+
* \par
|
229
|
+
* Operations to change the color components configuration.
|
230
|
+
* \par
|
231
|
+
* See \ref im_process_pon.h
|
232
|
+
* \ingroup process */
|
233
|
+
|
234
|
+
/** Split a RGB image into luma and chroma. \n
|
235
|
+
* Chroma is calculated as R-Y,G-Y,B-Y. Source image must be IM_RGB/IM_BYTE. \n
|
236
|
+
* luma image is IM_GRAY/IM_BYTE and chroma is IM_RGB/IM_BYTE. \n
|
237
|
+
* Source and destiny must have the same size.
|
238
|
+
*
|
239
|
+
* \verbatim im.ProcessSplitYChroma(src_image: imImage, y_image: imImage, chroma_image: imImage) [in Lua 5] \endverbatim
|
240
|
+
* \verbatim im.ProcessSplitYChromaNew(src_image: imImage) -> y_image: imImage, chroma_image: imImage [in Lua 5] \endverbatim
|
241
|
+
* \ingroup colorproc */
|
242
|
+
void imProcessSplitYChroma(const imImage* src_image, imImage* y_image, imImage* chroma_image);
|
243
|
+
|
244
|
+
/** Split a RGB image into HSI planes. \n
|
245
|
+
* Source image must be IM_RGB/IM_BYTE,IM_FLOAT. Destiny images are all IM_GRAY/IM_FLOAT. \n
|
246
|
+
* Source images must normalized to 0-1 if type is IM_FLOAT (\ref imProcessToneGamut can be used). See \ref hsi for a definition of the color conversion.\n
|
247
|
+
* Source and destiny must have the same size.
|
248
|
+
*
|
249
|
+
* \verbatim im.ProcessSplitHSI(src_image: imImage, h_image: imImage, s_image: imImage, i_image: imImage) [in Lua 5] \endverbatim
|
250
|
+
* \verbatim im.ProcessSplitHSINew(src_image: imImage) -> h_image: imImage, s_image: imImage, i_image: imImage [in Lua 5] \endverbatim
|
251
|
+
* \ingroup colorproc */
|
252
|
+
void imProcessSplitHSI(const imImage* src_image, imImage* h_image, imImage* s_image, imImage* i_image);
|
253
|
+
|
254
|
+
/** Merge HSI planes into a RGB image. \n
|
255
|
+
* Source images must be IM_GRAY/IM_FLOAT. Destiny image can be IM_RGB/IM_BYTE,IM_FLOAT. \n
|
256
|
+
* Source and destiny must have the same size. See \ref hsi for a definition of the color conversion.
|
257
|
+
*
|
258
|
+
* \verbatim im.ProcessMergeHSI(h_image: imImage, s_image: imImage, i_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
|
259
|
+
* \verbatim im.ProcessMergeHSINew(h_image: imImage, s_image: imImage, i_image: imImage) -> dst_image: imImage [in Lua 5] \endverbatim
|
260
|
+
* \ingroup colorproc */
|
261
|
+
void imProcessMergeHSI(const imImage* h_image, const imImage* s_image, const imImage* i_image, imImage* dst_image);
|
262
|
+
|
263
|
+
/** Split a multicomponent image into separate components.\n
|
264
|
+
* Destiny images must be IM_GRAY. Size and data types must be all the same.\n
|
265
|
+
* The number of destiny images must match the depth of the source image.
|
266
|
+
*
|
267
|
+
* \verbatim im.ProcessSplitComponents(src_image: imImage, dst_image_list: table of imImage) [in Lua 5] \endverbatim
|
268
|
+
* \verbatim im.ProcessSplitComponentsNew(src_image: imImage) -> dst_image_list: table of imImage [in Lua 5] \endverbatim
|
269
|
+
* \ingroup colorproc */
|
270
|
+
void imProcessSplitComponents(const imImage* src_image, imImage** dst_image_list);
|
271
|
+
|
272
|
+
/** Merges separate components into a multicomponent image.\n
|
273
|
+
* Source images must be IM_GRAY. Size and data types must be all the same.\n
|
274
|
+
* The number of source images must match the depth of the destiny image.
|
275
|
+
*
|
276
|
+
* \verbatim im.ProcessMergeComponents(src_image_list: table of imImage, dst_image: imImage) [in Lua 5] \endverbatim
|
277
|
+
* \verbatim im.ProcessMergeComponentsNew(src_image_list: table of imImage) -> dst_image: imImage [in Lua 5] \endverbatim
|
278
|
+
* \ingroup colorproc */
|
279
|
+
void imProcessMergeComponents(const imImage** src_image_list, imImage* dst_image);
|
280
|
+
|
281
|
+
/** Normalize the color components by their sum. Example: c1 = c1/(c1+c2+c3). \n
|
282
|
+
* Destiny image must be IM_FLOAT.
|
283
|
+
*
|
284
|
+
* \verbatim im.ProcessNormalizeComponents(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
|
285
|
+
* \verbatim im.ProcessNormalizeComponentsNew(src_image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
|
286
|
+
* \ingroup colorproc */
|
287
|
+
void imProcessNormalizeComponents(const imImage* src_image, imImage* dst_image);
|
288
|
+
|
289
|
+
/** Replaces the source color by the destiny color. \n
|
290
|
+
* The color will be type casted to the image data type. \n
|
291
|
+
* The colors must have the same number of components of the images. \n
|
292
|
+
* Supports all color spaces and all data types except IM_CFLOAT.
|
293
|
+
*
|
294
|
+
* \verbatim im.ProcessReplaceColor(src_image: imImage, dst_image: imImage, src_color: table of numbers, dst_color: table of numbers) [in Lua 5] \endverbatim
|
295
|
+
* \verbatim im.ProcessReplaceColorNew(src_image: imImage, src_color: table of numbers, dst_color: table of numbers) -> new_image: imImage [in Lua 5] \endverbatim
|
296
|
+
* \ingroup colorproc */
|
297
|
+
void imProcessReplaceColor(const imImage* src_image, imImage* dst_image, float* src_color, float* dst_color);
|
298
|
+
|
299
|
+
|
300
|
+
|
301
|
+
/** \defgroup logic Logical Arithmetic Operations
|
302
|
+
* \par
|
303
|
+
* Logical binary math operations for images.
|
304
|
+
* \par
|
305
|
+
* See \ref im_process_pon.h
|
306
|
+
* \ingroup process */
|
307
|
+
|
308
|
+
/** Logical Operations.
|
309
|
+
* \ingroup logic */
|
310
|
+
enum imLogicOp {
|
311
|
+
IM_BIT_AND, /**< and = a & b */
|
312
|
+
IM_BIT_OR, /**< or = a | b */
|
313
|
+
IM_BIT_XOR /**< xor = ~(a | b) */
|
314
|
+
};
|
315
|
+
|
316
|
+
/** Apply a logical operation.\n
|
317
|
+
* Images must have data type IM_BYTE, IM_USHORT or IM_INT. Can be done in place.
|
318
|
+
*
|
319
|
+
* \verbatim im.ProcessBitwiseOp(src_image1: imImage, src_image2: imImage, dst_image: imImage, op: number) [in Lua 5] \endverbatim
|
320
|
+
* \verbatim im.ProcessBitwiseOpNew(src_image1: imImage, src_image2: imImage, op: number) -> new_image: imImage [in Lua 5] \endverbatim
|
321
|
+
* \ingroup logic */
|
322
|
+
void imProcessBitwiseOp(const imImage* src_image1, const imImage* src_image2, imImage* dst_image, int op);
|
323
|
+
|
324
|
+
/** Apply a logical NOT operation.\n
|
325
|
+
* Images must have data type IM_BYTE, IM_USHORT or IM_INT. Can be done in place.
|
326
|
+
*
|
327
|
+
* \verbatim im.ProcessBitwiseNot(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
|
328
|
+
* \verbatim im.ProcessBitwiseNotNew(src_image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
|
329
|
+
* \ingroup logic */
|
330
|
+
void imProcessBitwiseNot(const imImage* src_image, imImage* dst_image);
|
331
|
+
|
332
|
+
/** Apply a bit mask. \n
|
333
|
+
* The same as imProcessBitwiseOp but the second image is replaced by a fixed mask. \n
|
334
|
+
* Images must have data type IM_BYTE. It is valid only for AND, OR and XOR. Can be done in place.
|
335
|
+
*
|
336
|
+
* \verbatim im.ProcessBitMask(src_image: imImage, dst_image: imImage, mask: string, op: number) [in Lua 5] \endverbatim
|
337
|
+
* \verbatim im.ProcessBitMaskNew(src_image: imImage, mask: string, op: number) -> new_image: imImage [in Lua 5] \endverbatim
|
338
|
+
* In Lua, mask is a string with 0s and 1s, for example: "11001111".
|
339
|
+
* \ingroup logic */
|
340
|
+
void imProcessBitMask(const imImage* src_image, imImage* dst_image, unsigned char mask, int op);
|
341
|
+
|
342
|
+
/** Extract or Reset a bit plane. For ex: 000X0000 or XXX0XXXX (plane=3).\n
|
343
|
+
* Images must have data type IM_BYTE. Can be done in place.
|
344
|
+
*
|
345
|
+
* \verbatim im.ProcessBitPlane(src_image: imImage, dst_image: imImage, plane: number, do_reset: boolean) [in Lua 5] \endverbatim
|
346
|
+
* \verbatim im.ProcessBitPlaneNew(src_image: imImage, plane: number, do_reset: boolean) -> new_image: imImage [in Lua 5] \endverbatim
|
347
|
+
* \ingroup logic */
|
348
|
+
void imProcessBitPlane(const imImage* src_image, imImage* dst_image, int plane, int do_reset);
|
349
|
+
|
350
|
+
|
351
|
+
|
352
|
+
/** \defgroup render Synthetic Image Render
|
353
|
+
* \par
|
354
|
+
* Renders some 2D mathematical functions as images. All the functions operates in place
|
355
|
+
* and supports all data types except IM_CFLOAT.
|
356
|
+
* \par
|
357
|
+
* See \ref im_process_pon.h
|
358
|
+
* \ingroup process */
|
359
|
+
|
360
|
+
/** Render Funtion.
|
361
|
+
* \verbatim render_func(x: number, y: number, d: number, param: table of number) -> value: number [in Lua 5] \endverbatim
|
362
|
+
* \ingroup render */
|
363
|
+
typedef float (*imRenderFunc)(int x, int y, int d, float* param);
|
364
|
+
|
365
|
+
/** Render Conditional Funtion.
|
366
|
+
* \verbatim render_cond_func(x: number, y: number, d: number, param: table of number) -> value: number, cond: boolean [in Lua 5] \endverbatim
|
367
|
+
* \ingroup render */
|
368
|
+
typedef float (*imRenderCondFunc)(int x, int y, int d, int *cond, float* param);
|
369
|
+
|
370
|
+
/** Render a synthetic image using a render function. \n
|
371
|
+
* plus will make the render be added to the current image data,
|
372
|
+
* or else all data will be replaced. All the render functions use this or the conditional function. \n
|
373
|
+
* Returns zero if the counter aborted.
|
374
|
+
*
|
375
|
+
* \verbatim im.ProcessRenderOp(image: imImage, render_func: function, render_name: string, param: table of number, plus: boolean) -> counter: boolean [in Lua 5] \endverbatim
|
376
|
+
* \ingroup render */
|
377
|
+
int imProcessRenderOp(imImage* image, imRenderFunc render_func, char* render_name, float* param, int plus);
|
378
|
+
|
379
|
+
/** Render a synthetic image using a conditional render function. \n
|
380
|
+
* Data will be rendered only if the condional param is true. \n
|
381
|
+
* Returns zero if the counter aborted.
|
382
|
+
*
|
383
|
+
* \verbatim im.ProcessRenderCondOp(image: imImage, render_cond_func: function, render_name: string, param: table of number) -> counter: boolean [in Lua 5] \endverbatim
|
384
|
+
* \ingroup render */
|
385
|
+
int imProcessRenderCondOp(imImage* image, imRenderCondFunc render_cond_func, char* render_name, float* param);
|
386
|
+
|
387
|
+
/** Render speckle noise on existing data. Can be done in place.
|
388
|
+
*
|
389
|
+
* \verbatim im.ProcessRenderAddSpeckleNoise(src_image: imImage, dst_image: imImage, percent: number) -> counter: boolean [in Lua 5] \endverbatim
|
390
|
+
* \verbatim im.ProcessRenderAddSpeckleNoiseNew(src_image: imImage, percent: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
391
|
+
* \ingroup render */
|
392
|
+
int imProcessRenderAddSpeckleNoise(const imImage* src_image, imImage* dst_image, float percent);
|
393
|
+
|
394
|
+
/** Render gaussian noise on existing data. Can be done in place.
|
395
|
+
*
|
396
|
+
* \verbatim im.ProcessRenderAddGaussianNoise(src_image: imImage, dst_image: imImage, mean: number, stddev: number) -> counter: boolean [in Lua 5] \endverbatim
|
397
|
+
* \verbatim im.ProcessRenderAddGaussianNoiseNew(src_image: imImage, mean: number, stddev: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
398
|
+
* \ingroup render */
|
399
|
+
int imProcessRenderAddGaussianNoise(const imImage* src_image, imImage* dst_image, float mean, float stddev);
|
400
|
+
|
401
|
+
/** Render uniform noise on existing data. Can be done in place.
|
402
|
+
*
|
403
|
+
* \verbatim im.ProcessRenderAddUniformNoise(src_image: imImage, dst_image: imImage, mean: number, stddev: number) -> counter: boolean [in Lua 5] \endverbatim
|
404
|
+
* \verbatim im.ProcessRenderAddUniformNoiseNew(src_image: imImage, mean: number, stddev: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
405
|
+
* \ingroup render */
|
406
|
+
int imProcessRenderAddUniformNoise(const imImage* src_image, imImage* dst_image, float mean, float stddev);
|
407
|
+
|
408
|
+
/** Render random noise.
|
409
|
+
*
|
410
|
+
* \verbatim im.ProcessRenderRandomNoise(image: imImage) -> counter: boolean [in Lua 5] \endverbatim
|
411
|
+
* \ingroup render */
|
412
|
+
int imProcessRenderRandomNoise(imImage* image);
|
413
|
+
|
414
|
+
/** Render a constant. The number of values must match the depth of the image.
|
415
|
+
*
|
416
|
+
* \verbatim im.ProcessRenderConstant(image: imImage, value: table of number) -> counter: boolean [in Lua 5] \endverbatim
|
417
|
+
* \ingroup render */
|
418
|
+
int imProcessRenderConstant(imImage* image, float* value);
|
419
|
+
|
420
|
+
/** Render a centered wheel.
|
421
|
+
*
|
422
|
+
* \verbatim im.ProcessRenderWheel(image: imImage, internal_radius: number, external_radius: number) -> counter: boolean [in Lua 5] \endverbatim
|
423
|
+
* \ingroup render */
|
424
|
+
int imProcessRenderWheel(imImage* image, int internal_radius, int external_radius);
|
425
|
+
|
426
|
+
/** Render a centered cone.
|
427
|
+
*
|
428
|
+
* \verbatim im.ProcessRenderCone(image: imImage, radius: number) -> counter: boolean [in Lua 5] \endverbatim
|
429
|
+
* \ingroup render */
|
430
|
+
int imProcessRenderCone(imImage* image, int radius);
|
431
|
+
|
432
|
+
/** Render a centered tent.
|
433
|
+
*
|
434
|
+
* \verbatim im.ProcessRenderTent(image: imImage, tent_width: number, tent_height: number) -> counter: boolean [in Lua 5] \endverbatim
|
435
|
+
* \ingroup render */
|
436
|
+
int imProcessRenderTent(imImage* image, int tent_width, int tent_height);
|
437
|
+
|
438
|
+
/** Render a ramp. Direction can be vertical (1) or horizontal (0).
|
439
|
+
*
|
440
|
+
* \verbatim im.ProcessRenderRamp(image: imImage, start: number, end: number, vert_dir: boolean) -> counter: boolean [in Lua 5] \endverbatim
|
441
|
+
* \ingroup render */
|
442
|
+
int imProcessRenderRamp(imImage* image, int start, int end, int vert_dir);
|
443
|
+
|
444
|
+
/** Render a centered box.
|
445
|
+
*
|
446
|
+
* \verbatim im.ProcessRenderBox(image: imImage, box_width: number, box_height: number) -> counter: boolean [in Lua 5] \endverbatim
|
447
|
+
* \ingroup render */
|
448
|
+
int imProcessRenderBox(imImage* image, int box_width, int box_height);
|
449
|
+
|
450
|
+
/** Render a centered sinc.
|
451
|
+
*
|
452
|
+
* \verbatim im.ProcessRenderSinc(image: imImage, x_period: number, y_period: number) -> counter: boolean [in Lua 5] \endverbatim
|
453
|
+
* \ingroup render */
|
454
|
+
int imProcessRenderSinc(imImage* image, float x_period, float y_period);
|
455
|
+
|
456
|
+
/** Render a centered gaussian.
|
457
|
+
*
|
458
|
+
* \verbatim im.ProcessRenderGaussian(image: imImage, stddev: number) -> counter: boolean [in Lua 5] \endverbatim
|
459
|
+
* \ingroup render */
|
460
|
+
int imProcessRenderGaussian(imImage* image, float stddev);
|
461
|
+
|
462
|
+
/** Render the laplacian of a centered gaussian.
|
463
|
+
*
|
464
|
+
* \verbatim im.ProcessRenderLapOfGaussian(image: imImage, stddev: number) -> counter: boolean [in Lua 5] \endverbatim
|
465
|
+
* \ingroup render */
|
466
|
+
int imProcessRenderLapOfGaussian(imImage* image, float stddev);
|
467
|
+
|
468
|
+
/** Render a centered cosine.
|
469
|
+
*
|
470
|
+
* \verbatim im.ProcessRenderCosine(image: imImage, x_period: number, y_period: number) -> counter: boolean [in Lua 5] \endverbatim
|
471
|
+
* \ingroup render */
|
472
|
+
int imProcessRenderCosine(imImage* image, float x_period, float y_period);
|
473
|
+
|
474
|
+
/** Render a centered grid.
|
475
|
+
*
|
476
|
+
* \verbatim im.ProcessRenderGrid(image: imImage, x_space: number, y_space: number) -> counter: boolean [in Lua 5] \endverbatim
|
477
|
+
* \ingroup render */
|
478
|
+
int imProcessRenderGrid(imImage* image, int x_space, int y_space);
|
479
|
+
|
480
|
+
/** Render a centered chessboard.
|
481
|
+
*
|
482
|
+
* \verbatim im.ProcessRenderChessboard(image: imImage, x_space: number, y_space: number) -> counter: boolean [in Lua 5] \endverbatim
|
483
|
+
* \ingroup render */
|
484
|
+
int imProcessRenderChessboard(imImage* image, int x_space, int y_space);
|
485
|
+
|
486
|
+
|
487
|
+
|
488
|
+
/** \defgroup tonegamut Tone Gamut Operations
|
489
|
+
* \par
|
490
|
+
* Operations that try to preserve the min-max interval in the output (the dynamic range).
|
491
|
+
* \par
|
492
|
+
* See \ref im_process_pon.h
|
493
|
+
* \ingroup process */
|
494
|
+
|
495
|
+
|
496
|
+
/** Tone Gamut Operations.
|
497
|
+
* \ingroup tonegamut */
|
498
|
+
enum imToneGamut {
|
499
|
+
IM_GAMUT_NORMALIZE, /**< normalize = (a-min) / (max-min) (destiny image must be IM_FLOAT) */
|
500
|
+
IM_GAMUT_POW, /**< pow = ((a-min) / (max-min))^gamma * (max-min) + min \n
|
501
|
+
param[0]=gamma */
|
502
|
+
IM_GAMUT_LOG, /**< log = log(K * (a-min) / (max-min) + 1))*(max-min)/log(K+1) + min \n
|
503
|
+
param[0]=K (K>0) */
|
504
|
+
IM_GAMUT_EXP, /**< exp = (exp(K * (a-min) / (max-min)) - 1))*(max-min)/(exp(K)-1) + min \n
|
505
|
+
param[0]=K */
|
506
|
+
IM_GAMUT_INVERT, /**< invert = max - (a-min) */
|
507
|
+
IM_GAMUT_ZEROSTART, /**< zerostart = a - min */
|
508
|
+
IM_GAMUT_SOLARIZE, /**< solarize = a < level ? a: (level * (max-min) - a * (level-min)) / (max-level) \n
|
509
|
+
param[0]=level percentage (0-100) relative to min-max \n
|
510
|
+
photography solarization effect. */
|
511
|
+
IM_GAMUT_SLICE, /**< slice = start < a || a > end ? min: binarize? max: a \n
|
512
|
+
param[0]=start, param[1]=end, param[2]=binarize */
|
513
|
+
IM_GAMUT_EXPAND, /**< expand = a < start ? min: a > end ? max : (a-start)*(max-min)/(end-start) + min \n
|
514
|
+
param[0]=start, param[1]=end */
|
515
|
+
IM_GAMUT_CROP, /**< crop = a < start ? start: a > end ? end : a \n
|
516
|
+
param[0]=start, param[1]=end */
|
517
|
+
IM_GAMUT_BRIGHTCONT /**< brightcont = a < min ? min: a > max ? max: a * tan(c_a) + b_s + (max-min)*(1 - tan(c_a))/2 \n
|
518
|
+
param[0]=bright_shift (-100%..+100%), param[1]=contrast_factor (-100%..+100%) \n
|
519
|
+
change brightness and contrast simultaneously. */
|
520
|
+
};
|
521
|
+
|
522
|
+
/** Apply a gamut operation with arguments. \n
|
523
|
+
* Supports all data types except IM_CFLOAT. \n
|
524
|
+
* The linear operation do a special convertion when min > 0 and max < 1, it forces min=0 and max=1. \n
|
525
|
+
* IM_BYTE images have min=0 and max=255 always. \n
|
526
|
+
* Can be done in place. When there is no extra params use NULL.
|
527
|
+
*
|
528
|
+
* \verbatim im.ProcessToneGamut(src_image: imImage, dst_image: imImage, op: number, param: table of number) [in Lua 5] \endverbatim
|
529
|
+
* \verbatim im.ProcessToneGamutNew(src_image: imImage, op: number, param: table of number) -> new_image: imImage [in Lua 5] \endverbatim
|
530
|
+
* \ingroup tonegamut */
|
531
|
+
void imProcessToneGamut(const imImage* src_image, imImage* dst_image, int op, float* param);
|
532
|
+
|
533
|
+
/** Converts from (0-1) to (0-255), crop out of bounds values. \n
|
534
|
+
* Source image must be IM_FLOAT, and destiny image must be IM_BYTE.
|
535
|
+
*
|
536
|
+
* \verbatim im.ProcessUnNormalize(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
|
537
|
+
* \verbatim im.ProcessUnNormalizeNew(src_image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
|
538
|
+
* \ingroup tonegamut */
|
539
|
+
void imProcessUnNormalize(const imImage* src_image, imImage* dst_image);
|
540
|
+
|
541
|
+
/** Directly converts IM_USHORT, IM_INT and IM_FLOAT into IM_BYTE images. \n
|
542
|
+
* This can also be done using \ref imConvertDataType with IM_CAST_DIRECT.
|
543
|
+
*
|
544
|
+
* \verbatim im.ProcessDirectConv(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
|
545
|
+
* \verbatim im.ProcessDirectConvNew(src_image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
|
546
|
+
* \ingroup tonegamut */
|
547
|
+
void imProcessDirectConv(const imImage* src_image, imImage* dst_image);
|
548
|
+
|
549
|
+
/** A negative effect. Uses \ref imProcessToneGamut with IM_GAMUT_INVERT for non MAP images. \n
|
550
|
+
* Supports all color spaces and all data types except IM_CFLOAT. \n
|
551
|
+
* Can be done in place.
|
552
|
+
*
|
553
|
+
* \verbatim im.ProcessNegative(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
|
554
|
+
* \verbatim im.ProcessNegativeNew(src_image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
|
555
|
+
* \ingroup tonegamut */
|
556
|
+
void imProcessNegative(const imImage* src_image, imImage* dst_image);
|
557
|
+
|
558
|
+
|
559
|
+
|
560
|
+
/** \defgroup threshold Threshold Operations
|
561
|
+
* \par
|
562
|
+
* Operations that converts a usually IM_GRAY/IM_BYTE image into a IM_BINARY image using several threshold techniques.
|
563
|
+
* \par
|
564
|
+
* See \ref im_process_pon.h
|
565
|
+
* \ingroup process */
|
566
|
+
|
567
|
+
/** Apply a manual threshold. \n
|
568
|
+
* threshold = a <= level ? 0: value \n
|
569
|
+
* Normal value is 1 but another common value is 255. Can be done in place for IM_BYTE source. \n
|
570
|
+
* Supports all integer IM_GRAY images as source, and IM_BINARY as destiny.
|
571
|
+
*
|
572
|
+
* \verbatim im.ProcessThreshold(src_image: imImage, dst_image: imImage, level: number, value: number) [in Lua 5] \endverbatim
|
573
|
+
* \verbatim im.ProcessThresholdNew(src_image: imImage, level: number, value: number) -> new_image: imImage [in Lua 5] \endverbatim
|
574
|
+
* \ingroup threshold */
|
575
|
+
void imProcessThreshold(const imImage* src_image, imImage* dst_image, int level, int value);
|
576
|
+
|
577
|
+
/** Apply a threshold by the difference of two images. \n
|
578
|
+
* threshold = a1 <= a2 ? 0: 1 \n
|
579
|
+
* Can be done in place.
|
580
|
+
*
|
581
|
+
* \verbatim im.ProcessThresholdByDiff(src_image1: imImage, src_image2: imImage, dst_image: imImage) [in Lua 5] \endverbatim
|
582
|
+
* \verbatim im.ProcessThresholdByDiffNew(src_image1: imImage, src_image2: imImage) -> new_image: imImage [in Lua 5] \endverbatim
|
583
|
+
* \ingroup threshold */
|
584
|
+
void imProcessThresholdByDiff(const imImage* src_image1, const imImage* src_image2, imImage* dst_image);
|
585
|
+
|
586
|
+
/** Apply a threshold by the Hysteresis method. \n
|
587
|
+
* Hysteresis thersholding of edge pixels. Starting at pixels with a
|
588
|
+
* value greater than the HIGH threshold, trace a connected sequence
|
589
|
+
* of pixels that have a value greater than the LOW threhsold. \n
|
590
|
+
* Supports only IM_BYTE images.
|
591
|
+
* Note: could not find the original source code author name.
|
592
|
+
*
|
593
|
+
* \verbatim im.ProcessHysteresisThreshold(src_image: imImage, dst_image: imImage, low_thres: number, high_thres: number) [in Lua 5] \endverbatim
|
594
|
+
* \verbatim im.ProcessHysteresisThresholdNew(src_image: imImage, low_thres: number, high_thres: number) -> new_image: imImage [in Lua 5] \endverbatim
|
595
|
+
* \ingroup threshold */
|
596
|
+
void imProcessHysteresisThreshold(const imImage* src_image, imImage* dst_image, int low_thres, int high_thres);
|
597
|
+
|
598
|
+
/** Estimates hysteresis low and high threshold levels. \n
|
599
|
+
* Supports only IM_BYTE images.
|
600
|
+
* Usefull for \ref imProcessHysteresisThreshold.
|
601
|
+
*
|
602
|
+
* \verbatim im.ProcessHysteresisThresEstimate(image: imImage) -> low_level: number, high_level: number [in Lua 5] \endverbatim
|
603
|
+
* \ingroup threshold */
|
604
|
+
void imProcessHysteresisThresEstimate(const imImage* image, int *low_level, int *high_level);
|
605
|
+
|
606
|
+
/** Calculates the threshold level for manual threshold using an uniform error approach. \n
|
607
|
+
* Supports only IM_BYTE images.
|
608
|
+
* Extracted from XITE, Copyright 1991, Blab, UiO \n
|
609
|
+
* http://www.ifi.uio.no/~blab/Software/Xite/
|
610
|
+
\verbatim
|
611
|
+
Reference:
|
612
|
+
S. M. Dunn & D. Harwood & L. S. Davis:
|
613
|
+
"Local Estimation of the Uniform Error Threshold"
|
614
|
+
IEEE Trans. on PAMI, Vol PAMI-6, No 6, Nov 1984.
|
615
|
+
Comments: It only works well on images whith large objects.
|
616
|
+
Author: Olav Borgli, BLAB, ifi, UiO
|
617
|
+
Image processing lab, Department of Informatics, University of Oslo
|
618
|
+
\endverbatim
|
619
|
+
* Returns the used level.
|
620
|
+
*
|
621
|
+
* \verbatim im.ProcessUniformErrThreshold(src_image: imImage, dst_image: imImage) -> level: number [in Lua 5] \endverbatim
|
622
|
+
* \verbatim im.ProcessUniformErrThresholdNew(src_image: imImage) -> level: number, new_image: imImage [in Lua 5] \endverbatim
|
623
|
+
* \ingroup threshold */
|
624
|
+
int imProcessUniformErrThreshold(const imImage* src_image, imImage* dst_image);
|
625
|
+
|
626
|
+
/** Apply a dithering on each image channel by using a difusion error method. \n
|
627
|
+
* It can be applied on any IM_BYTE images. It will "threshold" each channel indivudually, so
|
628
|
+
* source and destiny must be of the same depth.
|
629
|
+
*
|
630
|
+
* \verbatim im.ProcessDifusionErrThreshold(src_image: imImage, dst_image: imImage, level: number) [in Lua 5] \endverbatim
|
631
|
+
* \verbatim im.ProcessDifusionErrThresholdNew(src_image: imImage, level: number) -> new_image: imImage [in Lua 5] \endverbatim
|
632
|
+
* \ingroup threshold */
|
633
|
+
void imProcessDifusionErrThreshold(const imImage* src_image, imImage* dst_image, int level);
|
634
|
+
|
635
|
+
/** Calculates the threshold level for manual threshold using a percentage of pixels
|
636
|
+
* that should stay bellow the threshold. \n
|
637
|
+
* Supports only IM_BYTE images.
|
638
|
+
* Returns the used level.
|
639
|
+
*
|
640
|
+
* \verbatim im.ProcessPercentThreshold(src_image: imImage, dst_image: imImage, percent: number) -> level: number [in Lua 5] \endverbatim
|
641
|
+
* \verbatim im.ProcessPercentThresholdNew(src_image: imImage, percent: number) -> level: number, new_image: imImage [in Lua 5] \endverbatim
|
642
|
+
* \ingroup threshold */
|
643
|
+
int imProcessPercentThreshold(const imImage* src_image, imImage* dst_image, float percent);
|
644
|
+
|
645
|
+
/** Calculates the threshold level for manual threshold using the Otsu approach. \n
|
646
|
+
* Returns the used level. \n
|
647
|
+
* Supports only IM_BYTE images.
|
648
|
+
* Original implementation by Flavio Szenberg.
|
649
|
+
*
|
650
|
+
* \verbatim im.ProcessOtsuThreshold(src_image: imImage, dst_image: imImage) -> level: number [in Lua 5] \endverbatim
|
651
|
+
* \verbatim im.ProcessOtsuThresholdNew(src_image: imImage) -> level: number, new_image: imImage [in Lua 5] \endverbatim
|
652
|
+
* \ingroup threshold */
|
653
|
+
int imProcessOtsuThreshold(const imImage* src_image, imImage* dst_image);
|
654
|
+
|
655
|
+
/** Calculates the threshold level for manual threshold using (max-min)/2. \n
|
656
|
+
* Returns the used level. \n
|
657
|
+
* Supports all integer IM_GRAY images as source, and IM_BINARY as destiny.
|
658
|
+
*
|
659
|
+
* \verbatim im.ProcessMinMaxThreshold(src_image: imImage, dst_image: imImage) -> level: number [in Lua 5] \endverbatim
|
660
|
+
* \verbatim im.ProcessMinMaxThresholdNew(src_image: imImage) -> level: number, new_image: imImage [in Lua 5] \endverbatim
|
661
|
+
* \ingroup threshold */
|
662
|
+
int imProcessMinMaxThreshold(const imImage* src_image, imImage* dst_image);
|
663
|
+
|
664
|
+
/** Estimates Local Max threshold level for IM_BYTE images.
|
665
|
+
*
|
666
|
+
* \verbatim im.ProcessLocalMaxThresEstimate(image: imImage) -> level: number [in Lua 5] \endverbatim
|
667
|
+
* \ingroup threshold */
|
668
|
+
void imProcessLocalMaxThresEstimate(const imImage* image, int *level);
|
669
|
+
|
670
|
+
/** Apply a manual threshold using an interval. \n
|
671
|
+
* threshold = start_level <= a <= end_level ? 1: 0 \n
|
672
|
+
* Normal value is 1 but another common value is 255. Can be done in place for IM_BYTE source. \n
|
673
|
+
* Supports all integer IM_GRAY images as source, and IM_BINARY as destiny.
|
674
|
+
*
|
675
|
+
* \verbatim im.ProcessSliceThreshold(src_image: imImage, dst_image: imImage, start_level: number, end_level: number) [in Lua 5] \endverbatim
|
676
|
+
* \verbatim im.ProcessSliceThresholdNew(src_image: imImage, start_level: number, end_level: number) -> new_image: imImage [in Lua 5] \endverbatim
|
677
|
+
* \ingroup threshold */
|
678
|
+
void imProcessSliceThreshold(const imImage* src_image, imImage* dst_image, int start_level, int end_level);
|
679
|
+
|
680
|
+
|
681
|
+
/** \defgroup effects Special Effects
|
682
|
+
* \par
|
683
|
+
* Operations to change image appearance.
|
684
|
+
* \par
|
685
|
+
* See \ref im_process_pon.h
|
686
|
+
* \ingroup process */
|
687
|
+
|
688
|
+
|
689
|
+
/** Generates a zoom in effect averaging colors inside a square region. \n
|
690
|
+
* Operates only on IM_BYTE images.
|
691
|
+
*
|
692
|
+
* \verbatim im.ProcessPixelate(src_image: imImage, dst_image: imImage, box_size: number) [in Lua 5] \endverbatim
|
693
|
+
* \verbatim im.ProcessPixelateNew(src_image: imImage, box_size: number) -> new_image: imImage [in Lua 5] \endverbatim
|
694
|
+
* \ingroup effects */
|
695
|
+
void imProcessPixelate(const imImage* src_image, imImage* dst_image, int box_size);
|
696
|
+
|
697
|
+
/** A simple Posterize effect. It reduces the number of colors in the image eliminating
|
698
|
+
* less significant bit planes. Can have 1 to 7 levels. See \ref imProcessBitMask. \n
|
699
|
+
* Images must have data type IM_BYTE.
|
700
|
+
*
|
701
|
+
* \verbatim im.ProcessPosterize(src_image: imImage, dst_image: imImage, level: number) [in Lua 5] \endverbatim
|
702
|
+
* \verbatim im.ProcessPosterizeNew(src_image: imImage, level: number) -> new_image: imImage [in Lua 5] \endverbatim
|
703
|
+
* \ingroup effects */
|
704
|
+
void imProcessPosterize(const imImage* src_image, imImage* dst_image, int level);
|
705
|
+
|
706
|
+
|
707
|
+
|
708
|
+
#if defined(__cplusplus)
|
709
|
+
}
|
710
|
+
#endif
|
711
|
+
|
712
|
+
#endif
|