Image package: Difference between revisions

Jump to navigation Jump to search
14,093 bytes added ,  21 November 2019
m
Included link to imfuse patch discussion
(remove newly implemented functions)
m (Included link to imfuse patch discussion)
(165 intermediate revisions by 9 users not shown)
Line 1: Line 1:
The {{Forge|image|image package}} is part of the octave-forge project.
The {{Forge|image|image package}} is part of the Octave Forge project. See its {{Forge|image|homepage}} for the latest release.
 
<div class="tocinline">__TOC__</div>


== Development ==
== Development ==
Line 5: Line 7:
Follows an incomplete list of stuff missing in the image package to be matlab compatible. Bugs are not listed here, [https://savannah.gnu.org/bugs/?func=search&group=octave search] and [https://savannah.gnu.org/bugs/?func=additem&group=octave report] them on the bug tracker instead.
Follows an incomplete list of stuff missing in the image package to be matlab compatible. Bugs are not listed here, [https://savannah.gnu.org/bugs/?func=search&group=octave search] and [https://savannah.gnu.org/bugs/?func=additem&group=octave report] them on the bug tracker instead.


=== Missing functions ===
{{Note|this entire section is about the current development version. If a Matlab function is missing from the list and does not appear on the current release of the package, confirm that is also missing in the [https://sourceforge.net/p/octave/image/ development sources] before adding it.}}
{{Note|this entire section is about the current development version. If a Matlab function is missing from the list and does not appear on the current release of the package, confirm that is also missing in the [https://sourceforge.net/p/octave/image/ development sources] before adding it.}}


=== Missing functions ===
<div style="column-count:4;-moz-column-count:4;-webkit-column-count:4">
<div style="column-count:4;-moz-column-count:4;-webkit-column-count:4">
* activecontour
* activecontour
* adapthisteq
* adapthisteq
* affine2d
* [https://savannah.gnu.org/patch/?8824 affine2d]
* affine3d
* affine3d
* applycform
* applycform
* axes2pix
* bwconvhull
* bwconvhull
* bwdistgeodesic
* bwdistgeodesic
* bwlookup
* bwlookup
* bwpack
* bwtraceboundary
* bwtraceboundary
* bwulterode
* bwulterode
* bwunpack
* chromadapt
* colorcloud
* convmtx2
* convmtx2
* corner
* corner
Line 30: Line 31:
* dct2
* dct2
* dctmtx
* dctmtx
* imbinarize
* deconvblind
* deconvblind
* deconvlucy
* deconvlucy
* deconvreg
* deconvreg
* deconvwnr
* [https://savannah.gnu.org/patch/?9365 deconvwnr]
* decorrstretch
* decorrstretch
* demosaic
* [https://savannah.gnu.org/patch/?9593 demosaic]
* dicomanon
* dicomanon
* dicomdisp
* dicomuid
* dicomuid
* edgetaper
* dpxinfo
* dpxread
* fan2para
* fan2para
* fanbeam
* fanbeam
Line 47: Line 51:
* fwind1
* fwind1
* fwind2
* fwind2
* gabor
* getimage
* getimage
* getimagemodel
* getimagemodel
Line 53: Line 58:
* getrect
* getrect
* gradientweight
* gradientweight
* grayconnected
* graycoprops
* graycoprops
* graydiffweight
* graydiffweight
* hdrread
* hdrread
* hdrwrite
* hdrwrite
* hough -- (see hough_circle)
* houghlines -- (see hough_line)
* houghpeaks
* iccfind
* iccfind
* iccread
* iccread
Line 66: Line 69:
* idct2
* idct2
* ifanbeam
* ifanbeam
* illumgray
* illumpca
* illumwhite
* im2java2d
* im2java2d
* ImageAdapter
* ImageAdapter
* imageinfo
* imageinfo
* imapplymatrix
* [https://savannah.gnu.org/patch/?9717 imapplymatrix]
* imapprox
* imapprox
* imbinarize
* imboxfilt
* imboxfilt3
* imcolormaptool
* imcolormaptool
* imcontour
* imcontour
Line 77: Line 86:
* imdistline
* imdistline
* imellipse
* imellipse
* imextendedmax
* imextendedmin
* imfill -- (see bwfill)
* imfindcircles
* imfreehand
* imfreehand
* imfuse
* [https://savannah.gnu.org/patch/?9730 imfuse]
* imgaborfilt
* imgaussfilt
* imgaussfilt3
* imgca
* imgca
* imgcf
* imgcf
* imgetfile
* imguidedfilter
* imguidedfilter
* imhandles
* imhandles
* imhistmatch
* imhistmatch
* imhmax
* imhmin
* imimposemin
* imline
* imline
* immagbox
* immagbox
Line 97: Line 101:
* imoverview
* imoverview
* imoverviewpanel
* imoverviewpanel
* impixelinfo
* [https://savannah.gnu.org/patch/?8722 impixelinfo]
* impixelinfoval
* [https://savannah.gnu.org/patch/?8722 impixelinfoval]
* impixelregion
* impixelregionpanel
* impixelregionpanel
* impixelregion
* immse
* implay
* implay
* impoint
* impoint
* impoly
* impoly
* improfile
* improfile
* impyramid
* imquantize
* imrect
* imrect
* imreducehaze
* imref2d
* imref2d
* imref3d
* imref3d
Line 119: Line 121:
* imscrollpanel
* imscrollpanel
* imsegfmm
* imsegfmm
* imsharpen
* imseggeodesic
* imshowpair
* imshowpair
* imtool
* imtool
* imwarp
* imwarp
* integralBoxFilter
* integralBoxFilter3
* [https://savannah.gnu.org/patch/?9606 integralImage]
* integralImage3
* interfileinfo
* interfileinfo
* interfileread
* interfileread
Line 139: Line 145:
* isicc
* isicc
* isrset
* isrset
* lab2double
* [https://savannah.gnu.org/patch/?9600 lin2rgb]
* lab2rgb
* lab2uint16
* lab2uint8
* lab2xyz
* makecform
* makecform
* makeConstrainToRectFcn
* makeConstrainToRectFcn
* makehdr
* makehdr
* makeresampler
* makeresampler
* multithresh
* [https://savannah.gnu.org/patch/?9602 multithresh]
* nitfinfo
* nitfinfo
* nitfread
* nitfread
* openrset
* openrset
* otf2psf
* para2fan
* para2fan
* projective2d
* projective2d
* psf2otf
* regionfill
* psnr
* rgb2lin
* roifill
* roifill
* rgb2lab
* rgb2xyz
* roifilt2
* roifilt2
* roipoly
* [https://savannah.gnu.org/patch/?9509 roipoly]
* rsetwrite
* rsetwrite
* ssim
* ssim
Line 167: Line 166:
* tonemap
* tonemap
* truesize
* truesize
* viscircles
* visboundaries
* warp
* warp
* watershed
* [https://savannah.gnu.org/patch/?8060 whitepoint]
* whitepoint
* [https://savannah.gnu.org/patch/?9603 xyz2double]
* wiener2
* [https://savannah.gnu.org/patch/?9603 xyz2uint16]
* xyz2double
* xyz2lab
* xyz2rgb
* xyz2uint16
</div>
</div>


Line 196: Line 191:
* imcrop
* imcrop
** messing around with alternative coordinate systems (XData and YData) are not yet implemented.
** messing around with alternative coordinate systems (XData and YData) are not yet implemented.
* imwrap
** no supports for SmoothEdges option
* hough
** no RhoResolution option


=== Contributing ===
=== Contributing ===
* It'd help to group the missing functions above, as per [http://www.mathworks.com/help/images/functionlist.html] (similar to what was done in the [[signal package]] wiki page); please keep the original alphabetical list intact.
* It'd help to group the missing functions above, as per [http://www.mathworks.com/help/images/functionlist.html] (similar to what was done in the [[signal package]] wiki page); please keep the original alphabetical list intact.


[[Category:Octave-Forge]]
=== Open Bugs ===
 
{| class="wikitable"
|-
! bug !! bug title !! status
|-
| {{bug|38087}}|| image package: graycomatrix incompatibilities with matlab  || None
|-
| {{bug|41674}}|| image package: temporary arrays in imresize are doubles || None
|-
| {{bug|43218}}|| image package: imshear causes more signal spread than expected and inconsistent vertical offset || None
|-
| {{bug|44396}}|| image package: bwmorph shrink does not preserve Euler number || Confirmed
|-
| {{bug|44799}}|| image package: imrotate chrashes when using 'spline' as interpolation method || Confirmed
|-
| {{bug|44831}}|| image package: imrotate - different dimensions of output matrix || Confirmed
|-
| {{bug|45088}}|| image package: rangefilt requires domain and image to have equal number of dimensions || In Progress
|-
| {{bug|46745}}|| image package: imresize default method (bicubic) Matlab incompatible for the border pixels|| None
|-
| {{bug|48529}}|| image package: compilation warnings under Mac OSX|| None
|-
|-
| {{bug|50151}}|| image package: normxcorr2 is not compatible with Matlab|| None
|-
| {{bug|50188}}|| image package: poly2mask does incompatible rounding|| None
|-
| {{bug|50257}}|| image package: imtranslate is not Matlab compatible|| Confirmed
|-
| {{bug|50341}}|| Missing Function imrect in image package|| None
|-
| {{bug|50429}}|| image package: xyz2lab changed slightly in Matlab (and other color conversion functions)|| None
|-
| {{bug|50656}}|| image package: bwerode does not return right size when there's more dimensions on conn || None
|-
| {{bug|50708}}|| image package: add demosaic.m|| Patch Submitted
|-
| {{bug|50732}} || Image package: infinite error loop when assigning a strel (class) object to a vector|| Confirmed
|-
| {{bug|51420}} || [octave forge] (image) imrotate is less tolerant to missing argument than Matlab || None
|-
| {{bug|51719}} || [octave forge] (image) watershed unit test failure || None
|-
| {{bug|51769}} || [octave forge] (image) imresize bilinear interpolation inaccurate || Patch Submitted
|-
| {{bug|51884}} || [octave forge] (image) bwmorph(blackNwhiteMatrix, "thicken", 1) returns negated result (+ strange behavior at border) || None
|-
| {{bug|51979}} || [octave forge] (image) Failing unit test for impyramid || None
|-
| {{bug|51980}} || [octave forge] (image) Failing unit test for edge|| None
|-
| {{bug|52006}} || [octave forge] (image) 'makecform' feature request || Confirmed
|-
| {{bug|52119}} || [octave forge] (image) Add 'reflect' padding option to imfilter || None
|-
| {{bug|52715}} || [octave forge] (image) Add full data range option to ycbcrfunc conversions || None
|-
| {{bug|52959}} || [octave forge] (image) histeq is not compatible with Matlab || None
|-
| {{bug|55059}} || [octave forge] (image) Failing unit test for grayslice || In Progress
|-
| {{bug|55202}} || [octave forge] (image) imresize fails for method nearest and image of 1 row  || Confirmed
|-
|}
 
=== Patches ===
 
* {{patch|8059}}: [new function for image package] ranktf.m
* {{patch|8060}}: [image package new function] whitepoint.m
* {{patch|8722}}: implement impixelinfo and impixelinfoval
* {{patch|8813}}: image package: Extended image I/O for Analyze 7.5 format to handle big-endian images
* {{patch|8866}}: image package: add metainfo.xml file for Gnome Software
* {{patch|8571}}: image package: three deconvolution routines (Wiener, RL, RLTV)
* {{patch|8824}}: added affine2d class
* {{patch|9509}}: Image package: simple implementation of roipoly function
* {{patch|9593}}: [Octave Forge] (Image) New function demosaic.m from bug #50708
* {{patch|9600}}: [Octave Forge] (Image) New functions: lin2rgb.m and lrgb2lin.m
* {{patch|9602}}: [octave forge] (image) multithresh
* {{patch|9603}}: [Octave Forge] (Image) New functions: xyz2double.m, xyz2single.m, xyz2uint16.m
* {{patch|9717}}: [octave forge] (image) new function imapplymatrix
* {{patch|9729}}: [octave forge] (image) -- rgb2xyz conversion with adapted whitepoint
* {{patch|9730}}: [octave forge] (image) new function imfuse
 
== Image Processing Functions ==
 
{{Note| This section is still under construction so the list is incomplete.}}
 
This is a list of Image Processing functions by topic including: missing functions, related bugs and patches, and some alternatives.
 
Note: 
 
=== Basic Read and Write Image Files ===
 
{| class="wikitable" style="text-align: center"
|-
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives !! Notes
|-
| imfinfo || function is in Octave core || || ||
|-
| imread|| function is in Octave core || || [http://kyamagu.github.io/mexopencv/matlab/imread.html cv.imread] from [https://github.com/kyamagu/mexopencv mexopencv] ||
in case of color image, the color order of Octave is RGB/RGBA while OpenCV color order is BGR/BGRA
|-
| imwrite|| function is in Octave core || || [http://kyamagu.github.io/mexopencv/matlab/imread.html cv.imwrite] from [https://github.com/kyamagu/mexopencv mexopencv] ||
in case of color image, the color order of Octave is RGB/RGBA while OpenCV color order is BGR/BGRA
|-
|}
 
'''Missing:''' ''dicomanon, dicomdisp, dicomuid, dpxinfo, dpxread, interfileinfo, interfileread, nitfinfo, nitfread
''
 
=== High Dynamic Range Images - ''Not implemented'' ===
 
=== Large Image Files - ''Not implemented'' ===
 
=== Type Conversion  ===
 
{| class="wikitable" style="text-align: center"
|-
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives || Notes
|-
| adaptthresh || - || ||  [http://kyamagu.github.io/mexopencv/matlab/adaptiveThreshold.html cv.adaptiveThreshold] from [https://github.com/kyamagu/mexopencv mexopencv]||
|-
| demosaic || - || {{bug|50708}} {{patch|9593}}|| [http://kyamagu.github.io/mexopencv/matlab/demosaicing.html cv.demosaicing] from [https://github.com/kyamagu/mexopencv mexopencv] ||
|-
| gray2ind || function is in Octave core || || ||
|-
| grayslice || < 1.0.0 || ||  ||
|-
| graythresh || 1.0.0 || || || Octave version has more methods
|-
| im2double || 1.0.0 || || ||
|-
| im2int16  || 2.0.0 || || ||
|-
| im2java2d ||  -    || || ||
|-
| im2single || 2.0.0 || || ||
|-
| im2uint16 || 1.0.0 || || ||
|-
| im2uint8  || 1.0.0 || || ||
|-
| imbinarize || - || || imbinarize (I) is equivalent to im2bw(I, graythresh(I)),
another option is [http://kyamagu.github.io/mexopencv/matlab/threshold.html cv.threshold]  from [https://github.com/kyamagu/mexopencv mexopencv]
||
|-
| imcast    || 2.4.0 || || || Octave Only
|-
| imquantize || 2.6.0 || ||  ||
|-
| ind2gray  ||  function is in Octave core || || ||
|-
| ind2rgb  || function is in Octave core || || ||
|-
| label2rgb || 1.0.0 || || ||
|-
| mat2gray || < 1.0.0 || || ||
|-
| multithresh || - || {{patch|9602}} || ||
|-
| otsuthresh || - ||  {{patch|9360}} || graythresh || otsuthresh(hist) is equivalent to graythresh (hist)
|-
| rgb2gray || function is in Octave core  || {{bug|53654}} || || Octave version 4.4.0 and above
|-
| rgb2ind  || function is in Octave core  || || ||
|-
|}
 
=== Color ===
 
{| class="wikitable" style="text-align: center"
|-
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives || Notes
|-
| colorangle || 2.10.0 (unreleased) || || ||
|-
| lab2double || 2.6.0 || || ||
|-
| lab2rgb || 2.6.0 || || ||
|-
| lab2uint16 ||  2.6.0  || || ||
|-
| lab2uint8 ||  2.6.0  || || ||
|-
| lab2xyz ||  2.6.0  || || ||
|-
| lin2rgb || - || {{patch|9600}} || ||
|-
| ntsc2rgb || 2.8.0 || || ||
|-
| rgb2lab ||  2.6.0  || || ||
|-
| rgb2lin || - || {{patch|9600}} || ||
|-
| rgb2ntsc || 2.8.0 || || ||
|-
| rgb2xyz ||  2.6.0  || || ||
|-
| rgb2ycbcr ||  < 1.0.0|| || ||
|-
| whitepoint || - || {{patch|8060}} || ||
|-
| xyz2double || - || {{patch|9603}} || ||
|-
| xyz2lab ||  2.6.0  || || ||
|-
| xyz2rgb ||  2.6.0  || || ||
|-
| xyz2uint16 || - || {{patch|9603}} || ||
|-
| ycbcr2rgb ||  2.2.0|| || ||
|-
|}
 
'''Missing:''' ''applycform, chromadapt, colorcloud, iccfind, iccread, iccroot, iccwrite, illumgray, illumpca, illumwhite, imapprox, isicc, makecform''
 
=== Synthetic Images ===
 
{| class="wikitable" style="text-align: center"
|-
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives || Notes
|-
| checkerboard ||  2.2.0 || || ||
|-
| imnoise ||  2.2.2  || || ||
|-
| phantom ||  2.6.2  || || ||
|-
|}
 
=== Basic Display ===
 
{| class="wikitable" style="text-align: center"
|-
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives || Notes
|-
| imshow || function is in Octave core || || ||
|-
| montage || - || || ||
|-
|}
 
'''Missing:''' ''imfuse, immovie, implay, imshowpair, iptgetpref, iptprefs, iptsetpref, warp''
 
=== Image Filtering ===
 
{| class="wikitable" style="text-align: center"
|-
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives || Notes
|-
| bwareafilt|| 2.4.0  || || ||
|-
| bwpropfilt || 2.4.0  || || ||
|-
| convmtx2 || -  || || ||
|-
| entropyfilt ||  1.0.9  ||  || ||
|-
| fibermetric ||-  || || ||
|-
| freqz2 ||  -|| || ||
|-
| fsamp2 || - || || ||
|-
| fspecial || 1.0.0  || || ||
|-
| ftrans2 ||  - || || ||
|-
| fwind1 || - || || ||
|-
| fwind2 || - || || ||
|-
| gabor || - || || ||
|-
| imboxfilt || - || || ||
|-
| imboxfilt3 || - || || ||
|-
| imfilter || 1.0.5  || || ||
|-
| imgaborfilt || -  || || ||
|-
| imgaussfilt || -  || || ||
|-
| imgaussfilt3 ||  - || || ||
|-
| imguidedfilter ||  - || || ||
|-
| imsmooth|| 1.0.5 || || || Octave only
|-
| integralBoxFilter ||  - || || ||
|-
| integralBoxFilter3 ||- || || ||
|-
| integralImage ||- || {{patch|9606}} || [http://kyamagu.github.io/mexopencv/matlab/integral.html cv.integral] from [https://github.com/kyamagu/mexopencv mexopencv] ||
|-
| integralImage3 || -  || || ||
|-
| medfilt2 || < 1.0.0  || || ||
|-
| medfilt3 || - || || ||
|-
| nlfilter || < 1.0.0 || || ||
|-
| normxcorr2 || 2.0.0 ||  {{bug|50151}} || ||
|-
| ordfilt2 || 1.0.9 ||  || ||
|-
| padarray || < 1.0.0 || || ||
|-
| rangefilt || 1.0.9 || {{bug|45088}} || ||
|-
| stdfilt ||  1.0.9 ||  || ||
|-
| wiener2 ||  2.8.0|| || ||
|-
|}
 
=== Image Arithmetic ===
 
{| class="wikitable" style="text-align: center"
|-
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives || Notes
|-
| imabsdiff || 2.0.0  || || ||
|-
| imadd         || 2.0.0  || || ||
|-
| imapplymatrix ||    -    || {{patch|9717}} || ||
|-
| imcomplement || 1.0.6  || || ||
|-
| imdivide || 2.0.0  || || ||
|-
| imlincomb || 2.0.0  || || ||
|-
|  immultiply || 2.0.0  || || ||
|-
| imsubtract    || 2.0.0  || || ||
|-
|}
 
=== Morphological Operations ===
 
{| class="wikitable" style="text-align: center"
|-
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives || Notes
|-
| applylut  ||  < 1.0.0    || || ||
|-
| bwareaopen ||  2.2.0      || || ||
|-
|  bwhitmiss ||  < 1.0.0      || || ||
|-
|  bwlookup ||    --  || || ||
|-
|  bwmorph || < 1.0.0        ||  {{bug|51884}} || ||
|-
|  bwulterode ||  --    || || ||
|-
| conndef  ||    < 1.0.0    || || ||
|-
|  imbothat ||  2.0.0    || || ||
|-
| imclearborder ||  2.4.0      || || ||
|-
| imclose ||  < 1.0.0      || || ||
|-
|  imdilate ||  < 1.0.0    || || ||
|-
|  imerode ||  < 1.0.0      || || ||
|-
| imextendedmax ||    2.8.0 ||  || ||
|-
|  imextendedmin ||    2.8.0 ||  || ||
|-
| imfill ||  2.6.0      || || ||
|-
| imhmax ||    2.8.0 ||  || ||
|-
| imhmin ||    2.8.0 ||  || ||
|-
|  imimposemin ||    2.8.0 ||  || ||
|-
|  imopen ||  < 1.0.0      || || ||
|-
| imreconstruct ||  2.4.0      || || ||
|-
| imregionalmax ||  2.4.0      || || ||
|-
| imregionalmin ||  2.4.0    || || ||
|-
| imtophat ||  < 1.0.0    || || ||
|-
| iptcheckconn ||  2.0.0      || || ||
|-
| offsetstrel ||    --  || || ||
|-
| strel ||    2.2.0    || {{bug|50732}} || ||
|-
| watershed ||  2.6.0    || || ||
|-
|}
 
=== Image Transforms ===
 
{| class="wikitable" style="text-align: center"
|-
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives || Notes
|-
| dct2 ||  || || ||
|-
| dctmtx ||  || || ||
|-
| fanbeam ||  || || ||
|-
| fan2para ||  || || ||
|-
| fftshift||  || || ||
|-
| fft2  ||  || || ||
|-
| hough ||  || || ||
|-
| houghlines ||  || || ||
|-
| houghpeaks ||  || || ||
|-
|idct2 ||  || || ||
|-
|ifftshift||  || || ||
|-
|ifft2||  || || ||
|-
|iradon||  || || ||
|-
|para2fan||  || || ||
|-
|radon||  || || ||
|-
|}
 
=== Graphical Interface Interaction ===
 
{| class="wikitable" style="text-align: center"
|-
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives || Notes
|-
| imellipse ||  -  || || ||
|-
| imfreehand ||  -  || || ||
|-
| imline ||  -  || || ||
|-
| immagbox ||  -  || || ||
|-
| imoverview ||  -  || || ||
|-
| imoverviewpanel ||  -  || || ||
|-
| impixelinfo ||  -  || {{patch|8722}} || ||
|-
| impixelinfoval ||  -  || {{patch|8722}} || ||
|-
| impixelregion ||  -  || || ||
|-
| impixelregionpanel ||  -  || || ||
|-
| implay ||  -  || || ||
|-
| impoint ||  -  || || ||
|-
| impoly ||  -  || || ||
|-
| imrect ||  -  || || ||
|-
| imscrollpanel ||  -  || || ||
|-
| iptgetpref ||  -  || || ||
|-
| iptprefs ||  -  || || ||
|-
| iptsetpref ||  -  || || ||
|-
|}
* Obs: implay, iptgetpref, iptprefs, iptsetpref functions are on Basic Display section too...
 
[[Category:Octave Forge]]
[[Category:Missing functions]]

Navigation menu