ruby-iup 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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,170 @@
|
|
1
|
+
/** \file
|
2
|
+
* \brief Image Processing - Global Operations
|
3
|
+
*
|
4
|
+
* See Copyright Notice in im_lib.h
|
5
|
+
*/
|
6
|
+
|
7
|
+
#ifndef __IM_PROCESS_GLO_H
|
8
|
+
#define __IM_PROCESS_GLO_H
|
9
|
+
|
10
|
+
#include "im_image.h"
|
11
|
+
|
12
|
+
#if defined(__cplusplus)
|
13
|
+
extern "C" {
|
14
|
+
#endif
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
/** \defgroup transform Other Domain Transform Operations
|
19
|
+
* \par
|
20
|
+
* Hough, Distance.
|
21
|
+
*
|
22
|
+
* See \ref im_process_glo.h
|
23
|
+
* \ingroup process */
|
24
|
+
|
25
|
+
/** Hough Lines Transform. \n
|
26
|
+
* It will detect white lines in a black background. So the source image must be a IM_BINARY image
|
27
|
+
* with the white lines of interest enhanced. The better the threshold with the white lines the better
|
28
|
+
* the line detection. \n
|
29
|
+
* The destiny image must have IM_GRAY, IM_INT, hg_width=180, hg_height=2*rmax+1,
|
30
|
+
* where rmax is the image diagonal/2 (rmax = srqrt(width*width + height*height)). \n
|
31
|
+
* The hough transform defines "cos(theta) * X + sin(theta) * Y = rho" and the parameters are in the interval: \n
|
32
|
+
* theta = "0 .. 179", rho = "-hg_height/2 .. hg_height/2" .\n
|
33
|
+
* Where rho is the perpendicular distance from the center of the image and theta the angle with the normal.
|
34
|
+
* So do not confuse theta with the line angle, they are perpendicular. \n
|
35
|
+
* Returns zero if the counter aborted. \n
|
36
|
+
* Inspired from ideas in XITE, Copyright 1991, Blab, UiO \n
|
37
|
+
* http://www.ifi.uio.no/~blab/Software/Xite/
|
38
|
+
*
|
39
|
+
* \verbatim im.ProcessHoughLines(src_image: imImage, dst_image: imImage) -> counter: boolean [in Lua 5] \endverbatim
|
40
|
+
* \verbatim im.ProcessHoughLinesNew(image: imImage) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
41
|
+
* \ingroup transform */
|
42
|
+
int imProcessHoughLines(const imImage* src_image, imImage* dst_image);
|
43
|
+
|
44
|
+
/** Draw detected hough lines. \n
|
45
|
+
* The source image must be IM_GRAY and IM_BYTE. The destiny image can be a clone of the source image or
|
46
|
+
* it can be the source image for in place processing. \n
|
47
|
+
* If the hough transform is not NULL, then the hough points are filtered to include only lines
|
48
|
+
* that are significally different from each other. \n
|
49
|
+
* The hough image is the hough transform image, but it is optional and can be NULL.
|
50
|
+
* If not NULL then it will be used to filter lines that are very similar. \n
|
51
|
+
* The hough points image is a hough transform image that was thresholded to a IM_BINARY image,
|
52
|
+
* usually using a Local Max threshold operation (see \ref imProcessLocalMaxThreshold). Again the better the threshold the better the results. \n
|
53
|
+
* The destiny image will be set to IM_MAP, and the detected lines will be drawn using a red color. \n
|
54
|
+
* Returns the number of detected lines.
|
55
|
+
*
|
56
|
+
* \verbatim im.ProcessHoughLinesDraw(src_image: imImage, hough: imImage, hough_points: imImage, dst_image: imImage) -> lines: number [in Lua 5] \endverbatim
|
57
|
+
* \verbatim im.ProcessHoughLinesDrawNew(image: imImage, hough: imImage, hough_points: imImage) -> lines: number, new_image: imImage [in Lua 5] \endverbatim
|
58
|
+
* \ingroup transform */
|
59
|
+
int imProcessHoughLinesDraw(const imImage* src_image, const imImage* hough, const imImage* hough_points, imImage* dst_image);
|
60
|
+
|
61
|
+
/** Calculates the Cross Correlation in the frequency domain. \n
|
62
|
+
* CrossCorr(a,b) = IFFT(Conj(FFT(a))*FFT(b)) \n
|
63
|
+
* Images must be of the same size and only destiny image must be of type complex.
|
64
|
+
*
|
65
|
+
* \verbatim im.ProcessCrossCorrelation(src_image1: imImage, src_image2: imImage, dst_image: imImage) [in Lua 5] \endverbatim
|
66
|
+
* \verbatim im.ProcessCrossCorrelationNew(image1: imImage, image2: imImage) -> new_image: imImage [in Lua 5] \endverbatim
|
67
|
+
* \ingroup transform */
|
68
|
+
void imProcessCrossCorrelation(const imImage* src_image1, const imImage* src_image2, imImage* dst_image);
|
69
|
+
|
70
|
+
/** Calculates the Auto Correlation in the frequency domain. \n
|
71
|
+
* Uses the cross correlation.
|
72
|
+
* Images must be of the same size and only destiny image must be of type complex.
|
73
|
+
*
|
74
|
+
* \verbatim im.ProcessAutoCorrelation(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
|
75
|
+
* \verbatim im.ProcessAutoCorrelationNew(image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
|
76
|
+
* \ingroup transform */
|
77
|
+
void imProcessAutoCorrelation(const imImage* src_image, imImage* dst_image);
|
78
|
+
|
79
|
+
/** Calculates the Distance Transform of a binary image
|
80
|
+
* using an aproximation of the euclidian distance.\n
|
81
|
+
* Each white pixel in the binary image is
|
82
|
+
* assigned a value equal to its distance from the nearest
|
83
|
+
* black pixel. \n
|
84
|
+
* Uses a two-pass algorithm incrementally calculating the distance. \n
|
85
|
+
* Source image must be IM_BINARY, destiny must be IM_FLOAT.
|
86
|
+
*
|
87
|
+
* \verbatim im.ProcessDistanceTransform(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
|
88
|
+
* \verbatim im.ProcessDistanceTransformNew(image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
|
89
|
+
* \ingroup transform */
|
90
|
+
void imProcessDistanceTransform(const imImage* src_image, imImage* dst_image);
|
91
|
+
|
92
|
+
/** Marks all the regional maximum of the distance transform. \n
|
93
|
+
* source is IMGRAY/IM_FLOAT destiny in IM_BINARY. \n
|
94
|
+
* We consider maximum all connected pixel values that have smaller pixel values around it.
|
95
|
+
*
|
96
|
+
* \verbatim im.ProcessRegionalMaximum(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
|
97
|
+
* \verbatim im.ProcessRegionalMaximumNew(image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
|
98
|
+
* \ingroup transform */
|
99
|
+
void imProcessRegionalMaximum(const imImage* src_image, imImage* dst_image);
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
/** \defgroup fourier Fourier Transform Operations
|
104
|
+
* \par
|
105
|
+
* All Fourier transforms use FFTW library version 2.1.5. \n
|
106
|
+
* Although there are newer versions, we build binaries only to version 2
|
107
|
+
* because it is small and as fast as newer versions.
|
108
|
+
* Source code to use FFTW version 3 is available.
|
109
|
+
* \par
|
110
|
+
* FFTW Copyright Matteo Frigo, Steven G. Johnson and the MIT. \n
|
111
|
+
* http://www.fftw.org \n
|
112
|
+
* See "fftw.h"
|
113
|
+
* \par
|
114
|
+
* Must link with "im_fftw" library. \n
|
115
|
+
* \par
|
116
|
+
* The FFTW lib has a GPL license. The license of the "im_fftw" library is automatically the GPL.
|
117
|
+
* So you cannot use it for commercial applications without contacting the authors.
|
118
|
+
* \par
|
119
|
+
* See \ref im_process_glo.h
|
120
|
+
* \ingroup process */
|
121
|
+
|
122
|
+
/** Forward FFT. \n
|
123
|
+
* The result has its lowest frequency at the center of the image. \n
|
124
|
+
* This is an unnormalized fft. \n
|
125
|
+
* Images must be of the same size. Destiny image must be of type complex.
|
126
|
+
*
|
127
|
+
* \verbatim im.ProcessFFT(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
|
128
|
+
* \verbatim im.ProcessFFTNew(image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
|
129
|
+
* \ingroup fourier */
|
130
|
+
void imProcessFFT(const imImage* src_image, imImage* dst_image);
|
131
|
+
|
132
|
+
/** Inverse FFT. \n
|
133
|
+
* The image has its lowest frequency restored to the origin before the transform. \n
|
134
|
+
* The result is normalized by (width*height). \n
|
135
|
+
* Images must be of the same size and both must be of type complex.
|
136
|
+
*
|
137
|
+
* \verbatim im.ProcessIFFT(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
|
138
|
+
* \verbatim im.ProcessIFFTNew(image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
|
139
|
+
* \ingroup fourier */
|
140
|
+
void imProcessIFFT(const imImage* src_image, imImage* dst_image);
|
141
|
+
|
142
|
+
/** Raw in-place FFT (forward or inverse). \n
|
143
|
+
* The lowest frequency can be centered after forward, or
|
144
|
+
* can be restored to the origin before inverse. \n
|
145
|
+
* The result can be normalized after the transform by sqrt(w*h) [1] or by (w*h) [2],
|
146
|
+
* or left unnormalized [0]. \n
|
147
|
+
* Images must be of the same size and both must be of type complex.
|
148
|
+
*
|
149
|
+
* \verbatim im.ProcessFFTraw(image: imImage, inverse: number, center: number, normalize: number) [in Lua 5] \endverbatim
|
150
|
+
* \ingroup fourier */
|
151
|
+
void imProcessFFTraw(imImage* image, int inverse, int center, int normalize);
|
152
|
+
|
153
|
+
/** Auxiliary function for the raw FFT. \n
|
154
|
+
* This is the function used internally to change the lowest frequency position in the image. \n
|
155
|
+
* If the image size has even dimensions the flag "center2origin" is useless. But if it is odd,
|
156
|
+
* you must specify if its from center to origin (usually used before inverse) or
|
157
|
+
* from origin to center (usually used after forward). \n
|
158
|
+
* Notice that this function is used for images in the the frequency domain. \n
|
159
|
+
* Image type must be complex.
|
160
|
+
*
|
161
|
+
* \verbatim im.ProcessSwapQuadrants(image: imImage, center2origin: number) [in Lua 5] \endverbatim
|
162
|
+
* \ingroup fourier */
|
163
|
+
void imProcessSwapQuadrants(imImage* image, int center2origin);
|
164
|
+
|
165
|
+
|
166
|
+
#if defined(__cplusplus)
|
167
|
+
}
|
168
|
+
#endif
|
169
|
+
|
170
|
+
#endif
|
@@ -0,0 +1,577 @@
|
|
1
|
+
/** \file
|
2
|
+
* \brief Image Processing - Local Operations
|
3
|
+
*
|
4
|
+
* See Copyright Notice in im_lib.h
|
5
|
+
*/
|
6
|
+
|
7
|
+
#ifndef __IM_PROCESS_LOC_H
|
8
|
+
#define __IM_PROCESS_LOC_H
|
9
|
+
|
10
|
+
#include "im_image.h"
|
11
|
+
|
12
|
+
#if defined(__cplusplus)
|
13
|
+
extern "C" {
|
14
|
+
#endif
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
/** \defgroup resize Image Resize
|
19
|
+
* \par
|
20
|
+
* Operations to change the image size.
|
21
|
+
* \par
|
22
|
+
* See \ref im_process_loc.h
|
23
|
+
* \ingroup process */
|
24
|
+
|
25
|
+
/** Only reduze the image size using the given decimation order. \n
|
26
|
+
* Supported decimation orders:
|
27
|
+
* \li 0 - zero order (mean)
|
28
|
+
* \li 1 - first order (bilinear decimation)
|
29
|
+
* Images must be of the same type. If image type is IM_MAP or IM_BINARY, must use order=0. \n
|
30
|
+
* Returns zero if the counter aborted.
|
31
|
+
*
|
32
|
+
* \verbatim im.ProcessReduce(src_image: imImage, dst_image: imImage, order: number) -> counter: boolean [in Lua 5] \endverbatim
|
33
|
+
* \verbatim im.ProcessReduceNew(image: imImage, order: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
34
|
+
* \ingroup resize */
|
35
|
+
int imProcessReduce(const imImage* src_image, imImage* dst_image, int order);
|
36
|
+
|
37
|
+
/** Change the image size using the given interpolation order. \n
|
38
|
+
* Supported interpolation orders:
|
39
|
+
* \li 0 - zero order (near neighborhood)
|
40
|
+
* \li 1 - first order (bilinear interpolation)
|
41
|
+
* \li 3 - third order (bicubic interpolation)
|
42
|
+
* Images must be of the same type. If image type is IM_MAP or IM_BINARY, must use order=0. \n
|
43
|
+
* Returns zero if the counter aborted.
|
44
|
+
*
|
45
|
+
* \verbatim im.ProcessResize(src_image: imImage, dst_image: imImage, order: number) -> counter: boolean [in Lua 5] \endverbatim
|
46
|
+
* \verbatim im.ProcessResizeNew(image: imImage, order: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
47
|
+
* \ingroup resize */
|
48
|
+
int imProcessResize(const imImage* src_image, imImage* dst_image, int order);
|
49
|
+
|
50
|
+
/** Reduze the image area by 4 (w/2,h/2). \n
|
51
|
+
* Images must be of the same type. Destiny image size must be source image width/2, height/2.
|
52
|
+
* Can not operate on IM_MAP nor IM_BINARY images.
|
53
|
+
*
|
54
|
+
* \verbatim im.ProcessReduceBy4(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
|
55
|
+
* \verbatim im.ProcessReduceBy4New(image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
|
56
|
+
* \ingroup resize */
|
57
|
+
void imProcessReduceBy4(const imImage* src_image, imImage* dst_image);
|
58
|
+
|
59
|
+
/** Extract a rectangular region from an image. \n
|
60
|
+
* Images must be of the same type. Destiny image size must be smaller than source image width-xmin, height-ymin. \n
|
61
|
+
* ymin and xmin must be >0 and <size.
|
62
|
+
*
|
63
|
+
* \verbatim im.ProcessCrop(src_image: imImage, dst_image: imImage, xmin: number, ymin: number) [in Lua 5] \endverbatim
|
64
|
+
* \verbatim im.ProcessCropNew(image: imImage, xmin: number, xmax: number, ymin: number, ymax: number) -> new_image: imImage [in Lua 5] \endverbatim
|
65
|
+
* \ingroup resize */
|
66
|
+
void imProcessCrop(const imImage* src_image, imImage* dst_image, int xmin, int ymin);
|
67
|
+
|
68
|
+
/** Insert a rectangular region in an image. \n
|
69
|
+
* Images must be of the same type. Region image size can be larger than source image. \n
|
70
|
+
* ymin and xmin must be >0 and <size. \n
|
71
|
+
* Source and destiny must be of the same size. Can be done in place.
|
72
|
+
*
|
73
|
+
* \verbatim im.ProcessInsert(src_image: imImage, region_image: imImage, dst_image: imImage, xmin: number, ymin: number) [in Lua 5] \endverbatim
|
74
|
+
* \verbatim im.ProcessInsertNew(image: imImage, region_image: imImage, xmin: number, ymin: number) -> new_image: imImage [in Lua 5] \endverbatim
|
75
|
+
* \ingroup resize */
|
76
|
+
void imProcessInsert(const imImage* src_image, const imImage* region_image, imImage* dst_image, int xmin, int ymin);
|
77
|
+
|
78
|
+
/** Increase the image size by adding pixels with zero value. \n
|
79
|
+
* Images must be of the same type. Destiny image size must be greatter than source image width+xmin, height+ymin.
|
80
|
+
*
|
81
|
+
* \verbatim im.ProcessAddMargins(src_image: imImage, dst_image: imImage, xmin: number, ymin: number) [in Lua 5] \endverbatim
|
82
|
+
* \verbatim im.ProcessAddMarginsNew(image: imImage, xmin: number, xmax: number, ymin: number, ymax: number) -> new_image: imImage [in Lua 5] \endverbatim
|
83
|
+
* \ingroup resize */
|
84
|
+
void imProcessAddMargins(const imImage* src_image, imImage* dst_image, int xmin, int ymin);
|
85
|
+
|
86
|
+
|
87
|
+
|
88
|
+
/** \defgroup geom Geometric Operations
|
89
|
+
* \par
|
90
|
+
* Operations to change the shape of the image.
|
91
|
+
* \par
|
92
|
+
* See \ref im_process_loc.h
|
93
|
+
* \ingroup process */
|
94
|
+
|
95
|
+
/** Calculates the size of the new image after rotation.
|
96
|
+
*
|
97
|
+
* \verbatim im.ProcessCalcRotateSize(width: number, height: number, cos0: number, sin0: number) [in Lua 5] \endverbatim
|
98
|
+
* \ingroup geom */
|
99
|
+
void imProcessCalcRotateSize(int width, int height, int *new_width, int *new_height, double cos0, double sin0);
|
100
|
+
|
101
|
+
/** Rotates the image using the given interpolation order (see \ref imProcessResize). \n
|
102
|
+
* Images must be of the same type. The destiny size can be calculated using \ref imProcessCalcRotateSize to fit the new image size,
|
103
|
+
* or can be any size, including the original size. The rotation is relative to the center of the image. \n
|
104
|
+
* Returns zero if the counter aborted.
|
105
|
+
*
|
106
|
+
* \verbatim im.ProcessRotate(src_image: imImage, dst_image: imImage, cos0: number, sin0: number, order: number) -> counter: boolean [in Lua 5] \endverbatim
|
107
|
+
* \verbatim im.ProcessRotateNew(image: imImage, cos0: number, sin0: number, order: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
108
|
+
* \ingroup geom */
|
109
|
+
int imProcessRotate(const imImage* src_image, imImage* dst_image, double cos0, double sin0, int order);
|
110
|
+
|
111
|
+
/** Rotates the image using the given interpolation order (see \ref imProcessResize). \n
|
112
|
+
* Images must be of the same type. Destiny can have any size, including the original size. \n
|
113
|
+
* The rotation is relative to the reference point. But the result can be shifted to the origin. \n
|
114
|
+
* Returns zero if the counter aborted.
|
115
|
+
*
|
116
|
+
* \verbatim im.ProcessRotateRef(src_image: imImage, dst_image: imImage, cos0: number, sin0: number, x: number, y: number, to_origin: boolean, order: number) -> counter: boolean [in Lua 5] \endverbatim
|
117
|
+
* \verbatim im.ProcessRotateRefNew(image: imImage, cos0: number, sin0: number, x: number, y: number, to_origin: boolean, order: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
118
|
+
* \ingroup geom */
|
119
|
+
int imProcessRotateRef(const imImage* src_image, imImage* dst_image, double cos0, double sin0, int x, int y, int to_origin, int order);
|
120
|
+
|
121
|
+
/** Rotates the image in 90 degrees counterclockwise or clockwise. Swap columns by lines. \n
|
122
|
+
* Images must be of the same type. Destiny width and height must be source height and width. \n
|
123
|
+
* Direction can be clockwise (1) or counter clockwise (-1).
|
124
|
+
*
|
125
|
+
* \verbatim im.ProcessRotate90(src_image: imImage, dst_image: imImage, dir_clockwise: boolean) [in Lua 5] \endverbatim
|
126
|
+
* \verbatim im.ProcessRotate90New(image: imImage, dir_clockwise: boolean) -> new_image: imImage [in Lua 5] \endverbatim
|
127
|
+
* \ingroup geom */
|
128
|
+
void imProcessRotate90(const imImage* src_image, imImage* dst_image, int dir_clockwise);
|
129
|
+
|
130
|
+
/** Rotates the image in 180 degrees. Swap columns and swap lines. \n
|
131
|
+
* Images must be of the same type and size.
|
132
|
+
*
|
133
|
+
* \verbatim im.ProcessRotate180(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
|
134
|
+
* \verbatim im.ProcessRotate180New(image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
|
135
|
+
* \ingroup geom */
|
136
|
+
void imProcessRotate180(const imImage* src_image, imImage* dst_image);
|
137
|
+
|
138
|
+
/** Mirror the image in a horizontal flip. Swap columns. \n
|
139
|
+
* Images must be of the same type and size.
|
140
|
+
* Can be done in-place.
|
141
|
+
*
|
142
|
+
* \verbatim im.ProcessMirror(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
|
143
|
+
* \verbatim im.ProcessMirrorNew(image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
|
144
|
+
* \ingroup geom */
|
145
|
+
void imProcessMirror(const imImage* src_image, imImage* dst_image);
|
146
|
+
|
147
|
+
/** Apply a vertical flip. Swap lines. \n
|
148
|
+
* Images must be of the same type and size.
|
149
|
+
* Can be done in-place.
|
150
|
+
*
|
151
|
+
* \verbatim im.ProcessFlip(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
|
152
|
+
* \verbatim im.ProcessFlipNew(image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
|
153
|
+
* \ingroup geom */
|
154
|
+
void imProcessFlip(const imImage* src_image, imImage* dst_image);
|
155
|
+
|
156
|
+
/** Apply a radial distortion using the given interpolation order (see imProcessResize). \n
|
157
|
+
* Images must be of the same type and size. Returns zero if the counter aborted.
|
158
|
+
*
|
159
|
+
* \verbatim im.ProcessRadial(src_image: imImage, dst_image: imImage, k1: number, order: number) -> counter: boolean [in Lua 5] \endverbatim
|
160
|
+
* \verbatim im.ProcessRadialNew(image: imImage, k1: number, order: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
161
|
+
* \ingroup geom */
|
162
|
+
int imProcessRadial(const imImage* src_image, imImage* dst_image, float k1, int order);
|
163
|
+
|
164
|
+
/** Apply a swirl distortion using the given interpolation order (see imProcessResize). \n
|
165
|
+
* Images must be of the same type and size. Returns zero if the counter aborted.
|
166
|
+
*
|
167
|
+
* \verbatim im.ProcessSwirl(src_image: imImage, dst_image: imImage, k: number, order: number) -> counter: boolean [in Lua 5] \endverbatim
|
168
|
+
* \verbatim im.ProcessSwirlNew(image: imImage, k: number, order: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
169
|
+
* \ingroup geom */
|
170
|
+
int imProcessSwirl(const imImage* src_image, imImage* dst_image, float k1, int order);
|
171
|
+
|
172
|
+
/** Split the image in two images, one containing the odd lines and other containing the even lines. \n
|
173
|
+
* Images must be of the same type. Height of the output images must be half the height of the input image.
|
174
|
+
* If the height of the input image is odd then the first image must have height equals to half+1.
|
175
|
+
*
|
176
|
+
* \verbatim im.ProcessInterlaceSplit(src_image: imImage, dst_image1: imImage, dst_image2: imImage) [in Lua 5] \endverbatim
|
177
|
+
* \verbatim im.ProcessInterlaceSplitNew(image: imImage) -> new_image1: imImage, new_image2: imImage [in Lua 5] \endverbatim
|
178
|
+
* \ingroup geom */
|
179
|
+
void imProcessInterlaceSplit(const imImage* src_image, imImage* dst_image1, imImage* dst_image2);
|
180
|
+
|
181
|
+
|
182
|
+
|
183
|
+
/** \defgroup morphgray Morphology Operations for Gray Images
|
184
|
+
* \par
|
185
|
+
* See \ref im_process_loc.h
|
186
|
+
* \ingroup process */
|
187
|
+
|
188
|
+
/** Base gray morphology convolution. \n
|
189
|
+
* Supports all data types except IM_CFLOAT. Can be applied on color images. \n
|
190
|
+
* Kernel is always IM_INT. Use kernel size odd for better results. \n
|
191
|
+
* Use -1 for don't care positions in kernel. Kernel values are added to image values, then \n
|
192
|
+
* you can use the maximum or the minimum within the kernel area. \n
|
193
|
+
* No border extensions are used.
|
194
|
+
* All the gray morphology operations use this function. \n
|
195
|
+
* If the kernel image attribute "Description" exists it is used by the counter.
|
196
|
+
*
|
197
|
+
* \verbatim im.ProcessGrayMorphConvolve(src_image: imImage, dst_image: imImage, kernel: imImage, ismax: boolean) -> counter: boolean [in Lua 5] \endverbatim
|
198
|
+
* \verbatim im.ProcessGrayMorphConvolveNew(image: imImage, kernel: imImage, ismax: boolean) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
199
|
+
* \ingroup morphgray */
|
200
|
+
int imProcessGrayMorphConvolve(const imImage* src_image, imImage* dst_image, const imImage* kernel, int ismax);
|
201
|
+
|
202
|
+
/** Gray morphology convolution with a kernel full of "0"s and use minimum value.
|
203
|
+
*
|
204
|
+
* \verbatim im.ProcessGrayMorphErode(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
|
205
|
+
* \verbatim im.ProcessGrayMorphErodeNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
206
|
+
* \ingroup morphgray */
|
207
|
+
int imProcessGrayMorphErode(const imImage* src_image, imImage* dst_image, int kernel_size);
|
208
|
+
|
209
|
+
/** Gray morphology convolution with a kernel full of "0"s and use maximum value.
|
210
|
+
*
|
211
|
+
* \verbatim im.ProcessGrayMorphDilate(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
|
212
|
+
* \verbatim im.ProcessGrayMorphDilateNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
213
|
+
* \ingroup morphgray */
|
214
|
+
int imProcessGrayMorphDilate(const imImage* src_image, imImage* dst_image, int kernel_size);
|
215
|
+
|
216
|
+
/** Erode+Dilate.
|
217
|
+
*
|
218
|
+
* \verbatim im.ProcessGrayMorphOpen(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
|
219
|
+
* \verbatim im.ProcessGrayMorphOpenNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
220
|
+
* \ingroup morphgray */
|
221
|
+
int imProcessGrayMorphOpen(const imImage* src_image, imImage* dst_image, int kernel_size);
|
222
|
+
|
223
|
+
/** Dilate+Erode.
|
224
|
+
*
|
225
|
+
* \verbatim im.ProcessGrayMorphClose(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
|
226
|
+
* \verbatim im.ProcessGrayMorphCloseNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
227
|
+
* \ingroup morphgray */
|
228
|
+
int imProcessGrayMorphClose(const imImage* src_image, imImage* dst_image, int kernel_size);
|
229
|
+
|
230
|
+
/** Open+Difference.
|
231
|
+
*
|
232
|
+
* \verbatim im.ProcessGrayMorphTopHat(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
|
233
|
+
* \verbatim im.ProcessGrayMorphTopHatNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
234
|
+
* \ingroup morphgray */
|
235
|
+
int imProcessGrayMorphTopHat(const imImage* src_image, imImage* dst_image, int kernel_size);
|
236
|
+
|
237
|
+
/** Close+Difference.
|
238
|
+
*
|
239
|
+
* \verbatim im.ProcessGrayMorphWell(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
|
240
|
+
* \verbatim im.ProcessGrayMorphWellNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
241
|
+
* \ingroup morphgray */
|
242
|
+
int imProcessGrayMorphWell(const imImage* src_image, imImage* dst_image, int kernel_size);
|
243
|
+
|
244
|
+
/** Difference(Erode, Dilate).
|
245
|
+
*
|
246
|
+
* \verbatim im.ProcessGrayMorphGradient(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
|
247
|
+
* \verbatim im.ProcessGrayMorphGradientNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
248
|
+
* \ingroup morphgray */
|
249
|
+
int imProcessGrayMorphGradient(const imImage* src_image, imImage* dst_image, int kernel_size);
|
250
|
+
|
251
|
+
|
252
|
+
|
253
|
+
/** \defgroup morphbin Morphology Operations for Binary Images
|
254
|
+
* \par
|
255
|
+
* See \ref im_process_loc.h
|
256
|
+
* \ingroup process */
|
257
|
+
|
258
|
+
/** Base binary morphology convolution. \n
|
259
|
+
* Images are all IM_BINARY. Kernel is IM_INT, but values can be only 1, 0 or -1. Use kernel size odd for better results. \n
|
260
|
+
* Hit white means hit=1 and miss=0, or else hit=0 and miss=1. \n
|
261
|
+
* Use -1 for don't care positions in kernel. Kernel values are simply compared with image values. \n
|
262
|
+
* The operation can be repeated by a number of iterations.
|
263
|
+
* The border is zero extended. \n
|
264
|
+
* Almost all the binary morphology operations use this function.\n
|
265
|
+
* If the kernel image attribute "Description" exists it is used by the counter.
|
266
|
+
*
|
267
|
+
* \verbatim im.ProcessBinMorphConvolve(src_image: imImage, dst_image: imImage, kernel: imImage, hit_white: boolean, iter: number) -> counter: boolean [in Lua 5] \endverbatim
|
268
|
+
* \verbatim im.ProcessBinMorphConvolveNew(image: imImage, kernel: imImage, hit_white: boolean, iter: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
269
|
+
* \ingroup morphbin */
|
270
|
+
int imProcessBinMorphConvolve(const imImage* src_image, imImage* dst_image, const imImage* kernel, int hit_white, int iter);
|
271
|
+
|
272
|
+
/** Binary morphology convolution with a kernel full of "1"s and hit white.
|
273
|
+
*
|
274
|
+
* \verbatim im.ProcessBinMorphErode(src_image: imImage, dst_image: imImage, kernel_size: number, iter: number) -> counter: boolean [in Lua 5] \endverbatim
|
275
|
+
* \verbatim im.ProcessBinMorphErodeNew(image: imImage, kernel_size: number, iter: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
276
|
+
* \ingroup morphbin */
|
277
|
+
int imProcessBinMorphErode(const imImage* src_image, imImage* dst_image, int kernel_size, int iter);
|
278
|
+
|
279
|
+
/** Binary morphology convolution with a kernel full of "0"s and hit black.
|
280
|
+
*
|
281
|
+
* \verbatim im.ProcessBinMorphDilate(src_image: imImage, dst_image: imImage, kernel_size: number, iter: number) -> counter: boolean [in Lua 5] \endverbatim
|
282
|
+
* \verbatim im.ProcessBinMorphDilateNew(image: imImage, kernel_size: number, iter: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
283
|
+
* \ingroup morphbin */
|
284
|
+
int imProcessBinMorphDilate(const imImage* src_image, imImage* dst_image, int kernel_size, int iter);
|
285
|
+
|
286
|
+
/** Erode+Dilate.
|
287
|
+
* When iteration is more than one it means Erode+Erode+Erode+...+Dilate+Dilate+Dilate+...
|
288
|
+
*
|
289
|
+
* \verbatim im.ProcessBinMorphOpen(src_image: imImage, dst_image: imImage, kernel_size: number, iter: number) -> counter: boolean [in Lua 5] \endverbatim
|
290
|
+
* \verbatim im.ProcessBinMorphOpenNew(image: imImage, kernel_size: number, iter: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
291
|
+
* \ingroup morphbin */
|
292
|
+
int imProcessBinMorphOpen(const imImage* src_image, imImage* dst_image, int kernel_size, int iter);
|
293
|
+
|
294
|
+
/** Dilate+Erode.
|
295
|
+
*
|
296
|
+
* \verbatim im.ProcessBinMorphClose(src_image: imImage, dst_image: imImage, kernel_size: number, iter: number) -> counter: boolean [in Lua 5] \endverbatim
|
297
|
+
* \verbatim im.ProcessBinMorphCloseNew(image: imImage, kernel_size: number, iter: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
298
|
+
* \ingroup morphbin */
|
299
|
+
int imProcessBinMorphClose(const imImage* src_image, imImage* dst_image, int kernel_size, int iter);
|
300
|
+
|
301
|
+
/** Erode+Difference. \n
|
302
|
+
* The difference from the source image is applied only once.
|
303
|
+
*
|
304
|
+
* \verbatim im.ProcessBinMorphOutline(src_image: imImage, dst_image: imImage, kernel_size: number, iter: number) -> counter: boolean [in Lua 5] \endverbatim
|
305
|
+
* \verbatim im.ProcessBinMorphOutlineNew(image: imImage, kernel_size: number, iter: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
306
|
+
* \ingroup morphbin */
|
307
|
+
int imProcessBinMorphOutline(const imImage* src_image, imImage* dst_image, int kernel_size, int iter);
|
308
|
+
|
309
|
+
/** Thins the supplied binary image using Rosenfeld's parallel thinning algorithm. \n
|
310
|
+
* Reference: \n
|
311
|
+
* "Efficient Binary Image Thinning using Neighborhood Maps" \n
|
312
|
+
* by Joseph M. Cychosz, 3ksnn64@ecn.purdue.edu \n
|
313
|
+
* in "Graphics Gems IV", Academic Press, 1994
|
314
|
+
*
|
315
|
+
* \verbatim im.ProcessBinMorphThin(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
|
316
|
+
* \verbatim im.ProcessBinMorphThinNew(image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
|
317
|
+
* \ingroup morphbin */
|
318
|
+
void imProcessBinMorphThin(const imImage* src_image, imImage* dst_image);
|
319
|
+
|
320
|
+
|
321
|
+
|
322
|
+
/** \defgroup rank Rank Convolution Operations
|
323
|
+
* \par
|
324
|
+
* All the rank convolution use the same base function. Near the border the base function
|
325
|
+
* includes only the real image pixels in the rank. No border extensions are used.
|
326
|
+
* \par
|
327
|
+
* See \ref im_process_loc.h
|
328
|
+
* \ingroup process */
|
329
|
+
|
330
|
+
/** Rank convolution using the median value. \n
|
331
|
+
* Returns zero if the counter aborted. \n
|
332
|
+
* Supports all data types except IM_CFLOAT. Can be applied on color images.
|
333
|
+
*
|
334
|
+
* \verbatim im.ProcessMedianConvolve(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
|
335
|
+
* \verbatim im.ProcessMedianConvolveNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
336
|
+
* \ingroup rank */
|
337
|
+
int imProcessMedianConvolve(const imImage* src_image, imImage* dst_image, int kernel_size);
|
338
|
+
|
339
|
+
/** Rank convolution using (maximum-minimum) value. \n
|
340
|
+
* Returns zero if the counter aborted. \n
|
341
|
+
* Supports all data types except IM_CFLOAT. Can be applied on color images.
|
342
|
+
*
|
343
|
+
* \verbatim im.ProcessRangeConvolve(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
|
344
|
+
* \verbatim im.ProcessRangeConvolveNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
345
|
+
* \ingroup rank */
|
346
|
+
int imProcessRangeConvolve(const imImage* src_image, imImage* dst_image, int kernel_size);
|
347
|
+
|
348
|
+
/** Rank convolution using the closest maximum or minimum value. \n
|
349
|
+
* Returns zero if the counter aborted. \n
|
350
|
+
* Supports all data types except IM_CFLOAT. Can be applied on color images.
|
351
|
+
*
|
352
|
+
* \verbatim im.ProcessRankClosestConvolve(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
|
353
|
+
* \verbatim im.ProcessRankClosestConvolveNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
354
|
+
* \ingroup rank */
|
355
|
+
int imProcessRankClosestConvolve(const imImage* src_image, imImage* dst_image, int kernel_size);
|
356
|
+
|
357
|
+
/** Rank convolution using the maximum value. \n
|
358
|
+
* Returns zero if the counter aborted. \n
|
359
|
+
* Supports all data types except IM_CFLOAT. Can be applied on color images.
|
360
|
+
*
|
361
|
+
* \verbatim im.ProcessRankMaxConvolve(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
|
362
|
+
* \verbatim im.ProcessRankMaxConvolveNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
363
|
+
* \ingroup rank */
|
364
|
+
int imProcessRankMaxConvolve(const imImage* src_image, imImage* dst_image, int kernel_size);
|
365
|
+
|
366
|
+
/** Rank convolution using the minimum value. \n
|
367
|
+
* Returns zero if the counter aborted. \n
|
368
|
+
* Supports all data types except IM_CFLOAT. Can be applied on color images.
|
369
|
+
*
|
370
|
+
* \verbatim im.ProcessRankMinConvolve(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
|
371
|
+
* \verbatim im.ProcessRankMinConvolveNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
372
|
+
* \ingroup rank */
|
373
|
+
int imProcessRankMinConvolve(const imImage* src_image, imImage* dst_image, int kernel_size);
|
374
|
+
|
375
|
+
/** Threshold using a rank convolution with a range contrast function. \n
|
376
|
+
* Supports all integer IM_GRAY images as source, and IM_BINARY as destiny. \n
|
377
|
+
* Local variable threshold by the method of Bernsen. \n
|
378
|
+
* Extracted from XITE, Copyright 1991, Blab, UiO \n
|
379
|
+
* http://www.ifi.uio.no/~blab/Software/Xite/
|
380
|
+
\verbatim
|
381
|
+
Reference:
|
382
|
+
Bernsen, J: "Dynamic thresholding of grey-level images"
|
383
|
+
Proc. of the 8th ICPR, Paris, Oct 1986, 1251-1255.
|
384
|
+
Author: Oivind Due Trier
|
385
|
+
\endverbatim
|
386
|
+
* Returns zero if the counter aborted.
|
387
|
+
*
|
388
|
+
* \verbatim im.ProcessRangeContrastThreshold(src_image: imImage, dst_image: imImage, kernel_size: number, min_range: number) -> counter: boolean [in Lua 5] \endverbatim
|
389
|
+
* \verbatim im.ProcessRangeContrastThresholdNew(image: imImage, kernel_size: number, min_range: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
390
|
+
* \ingroup threshold */
|
391
|
+
int imProcessRangeContrastThreshold(const imImage* src_image, imImage* dst_image, int kernel_size, int min_range);
|
392
|
+
|
393
|
+
/** Threshold using a rank convolution with a local max function. \n
|
394
|
+
* Returns zero if the counter aborted. \n
|
395
|
+
* Supports all integer IM_GRAY images as source, and IM_BINARY as destiny.
|
396
|
+
*
|
397
|
+
* \verbatim im.ProcessLocalMaxThreshold(src_image: imImage, dst_image: imImage, kernel_size: number, min_level: number) -> counter: boolean [in Lua 5] \endverbatim
|
398
|
+
* \verbatim im.ProcessLocalMaxThresholdNew(image: imImage, kernel_size: number, min_level: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
399
|
+
* \ingroup threshold */
|
400
|
+
int imProcessLocalMaxThreshold(const imImage* src_image, imImage* dst_image, int kernel_size, int min_level);
|
401
|
+
|
402
|
+
|
403
|
+
|
404
|
+
/** \defgroup convolve Convolution Operations
|
405
|
+
* \par
|
406
|
+
* See \ref im_process_loc.h
|
407
|
+
* \ingroup process */
|
408
|
+
|
409
|
+
/** Base Convolution with a kernel. \n
|
410
|
+
* Kernel can be IM_INT or IM_FLOAT, but always IM_GRAY. Use kernel size odd for better results. \n
|
411
|
+
* Supports all data types. The border is mirrored. \n
|
412
|
+
* Returns zero if the counter aborted. Most of the convolutions use this function.\n
|
413
|
+
* If the kernel image attribute "Description" exists it is used by the counter.
|
414
|
+
*
|
415
|
+
* \verbatim im.ProcessConvolve(src_image: imImage, dst_image: imImage, kernel: imImage) -> counter: boolean [in Lua 5] \endverbatim
|
416
|
+
* \verbatim im.ProcessConvolveNew(image: imImage, kernel: imImage) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
417
|
+
* \ingroup convolve */
|
418
|
+
int imProcessConvolve(const imImage* src_image, imImage* dst_image, const imImage* kernel);
|
419
|
+
|
420
|
+
/** Base convolution when the kernel is separable. Only the first line and the first column will be used. \n
|
421
|
+
* Returns zero if the counter aborted.\n
|
422
|
+
* If the kernel image attribute "Description" exists it is used by the counter.
|
423
|
+
*
|
424
|
+
* \verbatim im.ProcessConvolveSep(src_image: imImage, dst_image: imImage, kernel: imImage) -> counter: boolean [in Lua 5] \endverbatim
|
425
|
+
* \verbatim im.ProcessConvolveSepNew(image: imImage, kernel: imImage) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
426
|
+
* \ingroup convolve */
|
427
|
+
int imProcessConvolveSep(const imImage* src_image, imImage* dst_image, const imImage* kernel);
|
428
|
+
|
429
|
+
/** Base Convolution with two kernels. The result is the magnitude of the result of each convolution. \n
|
430
|
+
* Kernel can be IM_INT or IM_FLOAT, but always IM_GRAY. Use kernel size odd for better results. \n
|
431
|
+
* Supports all data types. The border is mirrored. \n
|
432
|
+
* Returns zero if the counter aborted. Most of the convolutions use this function.\n
|
433
|
+
* If the kernel image attribute "Description" exists it is used by the counter.
|
434
|
+
*
|
435
|
+
* \verbatim im.ProcessConvolveDual(src_image: imImage, dst_image: imImage, kernel1, kernel2: imImage) -> counter: boolean [in Lua 5] \endverbatim
|
436
|
+
* \verbatim im.ProcessConvolveDualNew(image: imImage, kernel1, kernel2: imImage) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
437
|
+
* \ingroup convolve */
|
438
|
+
int imProcessConvolveDual(const imImage* src_image, imImage* dst_image, const imImage *kernel1, const imImage *kernel2);
|
439
|
+
|
440
|
+
/** Repeats the convolution a number of times. \n
|
441
|
+
* Returns zero if the counter aborted.\n
|
442
|
+
* If the kernel image attribute "Description" exists it is used by the counter.
|
443
|
+
*
|
444
|
+
* \verbatim im.ProcessConvolveRep(src_image: imImage, dst_image: imImage, kernel: imImage, count: number) -> counter: boolean [in Lua 5] \endverbatim
|
445
|
+
* \verbatim im.ProcessConvolveRepNew(image: imImage, kernel: imImage, count: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
446
|
+
* \ingroup convolve */
|
447
|
+
int imProcessConvolveRep(const imImage* src_image, imImage* dst_image, const imImage* kernel, int count);
|
448
|
+
|
449
|
+
/** Convolve with a kernel rotating it 8 times and getting the absolute maximum value. \n
|
450
|
+
* Kernel must be square. \n
|
451
|
+
* The rotation is implemented only for kernel sizes 3x3, 5x5 and 7x7. \n
|
452
|
+
* Supports all data types except IM_CFLOAT.
|
453
|
+
* Returns zero if the counter aborted.\n
|
454
|
+
* If the kernel image attribute "Description" exists it is used by the counter.
|
455
|
+
*
|
456
|
+
* \verbatim im.ProcessCompassConvolve(src_image: imImage, dst_image: imImage, kernel: imImage) -> counter: boolean [in Lua 5] \endverbatim
|
457
|
+
* \verbatim im.ProcessCompassConvolveNew(image: imImage, kernel: imImage) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
458
|
+
* \ingroup convolve */
|
459
|
+
int imProcessCompassConvolve(const imImage* src_image, imImage* dst_image, imImage* kernel);
|
460
|
+
|
461
|
+
/** Utility function to rotate a kernel one time.
|
462
|
+
*
|
463
|
+
* \verbatim im.ProcessRotateKernel(kernel: imImage) [in Lua 5] \endverbatim
|
464
|
+
* \ingroup convolve */
|
465
|
+
void imProcessRotateKernel(imImage* kernel);
|
466
|
+
|
467
|
+
/** Difference(Gaussian1, Gaussian2). \n
|
468
|
+
* Supports all data types,
|
469
|
+
* but if source is IM_BYTE or IM_USHORT destiny image must be of type IM_INT.
|
470
|
+
*
|
471
|
+
* \verbatim im.ProcessDiffOfGaussianConvolve(src_image: imImage, dst_image: imImage, stddev1: number, stddev2: number) -> counter: boolean [in Lua 5] \endverbatim
|
472
|
+
* \verbatim im.ProcessDiffOfGaussianConvolveNew(image: imImage, stddev1: number, stddev2: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
473
|
+
* \ingroup convolve */
|
474
|
+
int imProcessDiffOfGaussianConvolve(const imImage* src_image, imImage* dst_image, float stddev1, float stddev2);
|
475
|
+
|
476
|
+
/** Convolution with a laplacian of a gaussian kernel. \n
|
477
|
+
* Supports all data types,
|
478
|
+
* but if source is IM_BYTE or IM_USHORT destiny image must be of type IM_INT.
|
479
|
+
*
|
480
|
+
* \verbatim im.ProcessLapOfGaussianConvolve(src_image: imImage, dst_image: imImage, stddev: number) -> counter: boolean [in Lua 5] \endverbatim
|
481
|
+
* \verbatim im.ProcessLapOfGaussianConvolveNew(image: imImage, stddev: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
482
|
+
* \ingroup convolve */
|
483
|
+
int imProcessLapOfGaussianConvolve(const imImage* src_image, imImage* dst_image, float stddev);
|
484
|
+
|
485
|
+
/** Convolution with a kernel full of "1"s inside a circle. \n
|
486
|
+
* Supports all data types.
|
487
|
+
*
|
488
|
+
* \verbatim im.ProcessMeanConvolve(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
|
489
|
+
* \verbatim im.ProcessMeanConvolveNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
490
|
+
* \ingroup convolve */
|
491
|
+
int imProcessMeanConvolve(const imImage* src_image, imImage* dst_image, int kernel_size);
|
492
|
+
|
493
|
+
/** Convolution with a float gaussian kernel. \n
|
494
|
+
* If sdtdev is negative its magnitude will be used as the kernel size. \n
|
495
|
+
* Supports all data types.
|
496
|
+
*
|
497
|
+
* \verbatim im.ProcessGaussianConvolve(src_image: imImage, dst_image: imImage, stddev: number) -> counter: boolean [in Lua 5] \endverbatim
|
498
|
+
* \verbatim im.ProcessGaussianConvolveNew(image: imImage, stddev: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
499
|
+
* \ingroup convolve */
|
500
|
+
int imProcessGaussianConvolve(const imImage* src_image, imImage* dst_image, float stddev);
|
501
|
+
|
502
|
+
/** Convolution with a barlett kernel. \n
|
503
|
+
* Supports all data types.
|
504
|
+
*
|
505
|
+
* \verbatim im.ProcessBarlettConvolve(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
|
506
|
+
* \verbatim im.ProcessBarlettConvolveNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
507
|
+
* \ingroup convolve */
|
508
|
+
int imProcessBarlettConvolve(const imImage* src_image, imImage* dst_image, int kernel_size);
|
509
|
+
|
510
|
+
/** Magnitude of the sobel convolution. \n
|
511
|
+
* Supports all data types.
|
512
|
+
*
|
513
|
+
* \verbatim im.ProcessSobelConvolve(src_image: imImage, dst_image: imImage) -> counter: boolean [in Lua 5] \endverbatim
|
514
|
+
* \verbatim im.ProcessSobelConvolveNew(image: imImage) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
515
|
+
* \ingroup convolve */
|
516
|
+
int imProcessSobelConvolve(const imImage* src_image, imImage* dst_image);
|
517
|
+
|
518
|
+
/** Magnitude of the prewitt convolution. \n
|
519
|
+
* Supports all data types.
|
520
|
+
*
|
521
|
+
* \verbatim im.ProcessPrewittConvolve(src_image: imImage, dst_image: imImage) -> counter: boolean [in Lua 5] \endverbatim
|
522
|
+
* \verbatim im.ProcessPrewittConvolveNew(image: imImage) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
523
|
+
* \ingroup convolve */
|
524
|
+
int imProcessPrewittConvolve(const imImage* src_image, imImage* dst_image);
|
525
|
+
|
526
|
+
/** Spline edge dectection. \n
|
527
|
+
* Supports all data types.
|
528
|
+
*
|
529
|
+
* \verbatim im.ProcessSplineEdgeConvolve(src_image: imImage, dst_image: imImage) -> counter: boolean [in Lua 5] \endverbatim
|
530
|
+
* \verbatim im.ProcessSplineEdgeConvolveNew(image: imImage) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
|
531
|
+
* \ingroup convolve */
|
532
|
+
int imProcessSplineEdgeConvolve(const imImage* src_image, imImage* dst_image);
|
533
|
+
|
534
|
+
/** Finds the zero crossings of IM_INT and IM_FLOAT images. Crossings are marked with non zero values
|
535
|
+
* indicating the intensity of the edge. It is usually used after a second derivative, laplace. \n
|
536
|
+
* Extracted from XITE, Copyright 1991, Blab, UiO \n
|
537
|
+
* http://www.ifi.uio.no/~blab/Software/Xite/
|
538
|
+
*
|
539
|
+
* \verbatim im.ProcessZeroCrossing(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
|
540
|
+
* \verbatim im.ProcessZeroCrossingNew(image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
|
541
|
+
* \ingroup convolve */
|
542
|
+
void imProcessZeroCrossing(const imImage* src_image, imImage* dst_image);
|
543
|
+
|
544
|
+
/** First part of the Canny edge detector. Includes the gaussian filtering and the nonmax suppression. \n
|
545
|
+
* After using this you could apply a Hysteresis Threshold, see \ref imProcessHysteresisThreshold. \n
|
546
|
+
* Image must be IM_BYTE/IM_GRAY. \n
|
547
|
+
* Implementation from the book:
|
548
|
+
\verbatim
|
549
|
+
J. R. Parker
|
550
|
+
"Algoritms for Image Processing and Computer Vision"
|
551
|
+
WILEY
|
552
|
+
\endverbatim
|
553
|
+
*
|
554
|
+
* \verbatim im.ProcessCanny(src_image: imImage, dst_image: imImage, stddev: number) [in Lua 5] \endverbatim
|
555
|
+
* \verbatim im.ProcessCannyNew(image: imImage, stddev: number) -> new_image: imImage [in Lua 5] \endverbatim
|
556
|
+
* \ingroup convolve */
|
557
|
+
void imProcessCanny(const imImage* src_image, imImage* dst_image, float stddev);
|
558
|
+
|
559
|
+
/** Calculates the kernel size given the standard deviation. \n
|
560
|
+
* If sdtdev is negative its magnitude will be used as the kernel size.
|
561
|
+
*
|
562
|
+
* \verbatim im.GaussianStdDev2KernelSize(stddev: number) -> kernel_size: number [in Lua 5] \endverbatim
|
563
|
+
* \ingroup convolve */
|
564
|
+
int imGaussianStdDev2KernelSize(float stddev);
|
565
|
+
|
566
|
+
/** Calculates the standard deviation given the kernel size.
|
567
|
+
*
|
568
|
+
* \verbatim im.GaussianKernelSize2StdDev(kernel_size: number) -> stddev: number [in Lua 5] \endverbatim
|
569
|
+
* \ingroup convolve */
|
570
|
+
float imGaussianKernelSize2StdDev(int kernel_size);
|
571
|
+
|
572
|
+
|
573
|
+
#if defined(__cplusplus)
|
574
|
+
}
|
575
|
+
#endif
|
576
|
+
|
577
|
+
#endif
|