Image package: Difference between revisions

Jump to navigation Jump to search
266 bytes added ,  22 August 2022
m (Just inserted the link to some patches)
(→‎Open Bugs: cleanup)
 
(106 intermediate revisions by 12 users not shown)
Line 1: Line 1:
The {{Forge|image|image package}} is part of the octave-forge project. See its {{Forge|image|homepage}} for the latest release.
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 ==


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.
=== Roadmap ===
The following are missing targets for the next minor release of the image package (version 2.8.0).  Small bug fixes, build fixes, and regressions may still be released before in a patch release (Version 2.6.X).
* add ellipse properties to {{codeline|regionprops}} (see bug {{bug|44100}})  ([http://hg.code.sf.net/p/octave/image/rev/7cf22a478792 done])
* speed up {{codeline|regionprops}} for large images with many small objects (probably work around for loop with labeled == labelid)
* support passing {{codeline|bwconncomp}} output to {{codeline|regionprops}} (and then fix {{codeline|bwpropfilt}} to use that instead of a labeled image)
* ND support on {{codeline|imfilter}}
* check if {{codeline|normxcorr2}} is Matlab compatible and investigate making use of {{codeline|fftconvn}} since it's likely to receive large input
* investigate implementing the missing deconvolution functions (see patch {{patch|8571}})
* anything else that is done or submitted before the above are done


=== Missing functions ===
=== Missing functions ===
Line 23: Line 13:
* activecontour
* activecontour
* adapthisteq
* adapthisteq
* [https://savannah.gnu.org/patch/?8824 affine2d]
* affine3d
* applycform
* applycform
* axes2pix
* bwconvhull
* bwconvhull
* bwdistgeodesic
* bwdistgeodesic
* bwlookup
* bwlookup
* bwpack
* bwtraceboundary
* bwtraceboundary
* bwulterode
* bwulterode
* bwunpack
* chromadapt
* chromadapt
* colorangle
* colorcloud
* colorcloud
* convmtx2
* convmtx2
Line 48: Line 32:
* deconvlucy
* deconvlucy
* deconvreg
* deconvreg
* [https://savannah.gnu.org/patch/?9365 deconvwnr]
* decorrstretch
* decorrstretch
* [https://savannah.gnu.org/patch/?9593 demosaic]
* [https://savannah.gnu.org/patch/?9593 demosaic]
Line 76: Line 59:
* hdrread
* hdrread
* hdrwrite
* hdrwrite
* [https://savannah.gnu.org/patch/?9412 houghlines] -- (see hough_line)
* [https://savannah.gnu.org/patch/?9407 houghpeaks]
* iccfind
* iccfind
* iccread
* iccread
Line 90: Line 71:
* ImageAdapter
* ImageAdapter
* imageinfo
* imageinfo
* imapplymatrix
* imapprox
* imapprox
* imbinarize
* imbinarize
Line 102: Line 82:
* imellipse
* imellipse
* imfreehand
* imfreehand
* imfuse
* imgaborfilt
* imgaborfilt
* imgaussfilt
* imgaussfilt
Line 125: Line 104:
* improfile
* improfile
* imrect
* imrect
* imref2d
* imreducehaze
* imref3d
* imregconfig
* imregconfig
* imregcorr
* imregcorr
Line 136: Line 114:
* imsegfmm
* imsegfmm
* imseggeodesic
* imseggeodesic
* imshowpair
* imtool
* imtool
* imwarp
* imwarp
* integralBoxFilter
* integralBoxFilter
* integralBoxFilter3
* integralBoxFilter3
* integralImage
* integralImage3
* interfileinfo
* interfileinfo
* interfileread
* interfileread
Line 168: Line 143:
* nitfread
* nitfread
* openrset
* openrset
* [https://savannah.gnu.org/patch/?9360 otsuthresh]
* para2fan
* para2fan
* projective2d
* projective2d
Line 219: Line 193:
|-
|-
! bug !! bug title !! status
! bug !! bug title !! status
|-
| {{bug|38085}} || image package: fails to build with --enable-64 (entropyfilt) || Confirmed
|-
|-
| {{bug|38087}}|| image package: graycomatrix incompatibilities with matlab  || None
| {{bug|38087}}|| image package: graycomatrix incompatibilities with matlab  || None
|-
| {{bug|38345}}|| image package: __spatial_filtering__() always returns class double || Confirmed
|-
| {{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|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|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|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 || Patch Reviewed
| {{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|48529}}|| image package: compilation warnings under Mac OSX|| None
|-
|-
| {{bug|50071}}|| OF image: bwfill(...,4) in Octave behaves like bwfill(...,8) in MATLAB and vice versa|| None
| {{bug|49452}}|| [Octave forge] (image) missing MATLAB function corner and undistortImage|| Confirmed
|-
|-
| {{bug|50151}}|| image package: normxcorr2 is not compatible with Matlab|| None
| {{bug|50151}}|| image package: normxcorr2 is not compatible with Matlab|| None
Line 253: Line 217:
|-
|-
| {{bug|50429}}|| image package: xyz2lab changed slightly in Matlab (and other color conversion functions)|| None  
| {{bug|50429}}|| image package: xyz2lab changed slightly in Matlab (and other color conversion functions)|| None  
|-
| {{bug|50554}}|| [octave forge] (image) cp2tform missing 'piecewise linear' and 'lwm' support|| None
|-
|-
| {{bug|50656}}|| image package: bwerode does not return right size when there's more dimensions on conn || 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|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|50732}} || Image package: infinite error loop when assigning a strel (class) object to a vector|| Confirmed
|-
| {{bug|50783}} || image package: imlincomb is not compatible with Matlab || Patch submitted
|-
| {{bug|50874}} ||  bwdist call causes application crash || Confirmed
|-
|-
| {{bug|51420}} || [octave forge] (image) imrotate is less tolerant to missing argument than Matlab || None
| {{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|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|51884}} || [octave forge] (image) bwmorph(blackNwhiteMatrix, "thicken", 1) returns negated result (+ strange behavior at border) || None
Line 275: Line 235:
|-
|-
| {{bug|51980}} || [octave forge] (image) Failing unit test for edge|| None
| {{bug|51980}} || [octave forge] (image) Failing unit test for edge|| None
|-
| {{bug|51981}} || [octave forge] (image) Failing unit test for otf2psf|| None
|-
| {{bug|51982}} || [octave forge] (image) Failing unit test for nlfilter|| None
|-
|-
| {{bug|52006}} || [octave forge] (image) 'makecform' feature request || Confirmed
| {{bug|52006}} || [octave forge] (image) 'makecform' feature request || Confirmed
Line 286: Line 242:
| {{bug|52715}} || [octave forge] (image) Add full data range option to ycbcrfunc conversions || None
| {{bug|52715}} || [octave forge] (image) Add full data range option to ycbcrfunc conversions || None
|-
|-
| {{bug|52933}} || [octave-forge] (image) regionprops Perimeter returns Matlab incompatible results || Patch Submitted
| {{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|52959}} || [octave-forge] (image) histeq is not compatible with Matlab || None
| {{bug|55438}} || [octave forge] (image) Binary input image for edge || None
|-  
| {{bug|55521}} || [octave forge] (image) Unit tests for bwpack and bwunpack fail on big endian architectures|| None
|-
|-
| {{bug|53090}} || [octave-forge] (image) imhist fails in dev version due to changes in colorbar || None
| {{bug|56958}} || [Octave-Forge] (image) Implementation of insertText  || Confirmed
|-
|-
| {{bug|53309}} || [octave forge] (image) imrotate of +/-90 degrees results in black image when 'crop' and RGB image as input || In Progress
| {{bug|57822}} || [octave forge] (image) test failures on macOS - imadjust, immse, mean2 || In progress
|-
| {{bug|58684}} || [octave forge] (image) imtranslate produces nonsense for fractional shifts || Confirmed
|-
| {{bug|59773}} || [octave forge] (image) iradon is not Matlab compatible when using filter || None
|-
| {{bug|62099}} || [octave forge] (image) imresize - lanczos* is not implemented || None
|-
| {{bug|62452}} || [octave forge] (image) bwmorph spur produces wrong result || None
|-
|-
|}
|}
Line 302: Line 270:
* {{patch|8722}}: implement impixelinfo and impixelinfoval
* {{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|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|8571}}: image package: three deconvolution routines (Wiener, RL, RLTV)
* {{patch|8824}}: added affine2d class
* {{patch|9235}}: image package: improve filtering functions (stdfilt, entropyfilt) and add tests (also medfilt2, ordfilt2, rangefilt)
* {{patch|9244}}: image package: regionprops.m - new properties ConvexHull, ConvexImage, ConvexArea, Solidity
* {{patch|9354}}: image package: new function wiener2.m
* {{patch|9360}}: image package: new function otsuthresh.m
* {{patch|9365}}: image package: new function deconvwnr.m
* {{patch|9407}}: image package: new function houghpeaks.m
* {{patch|9412}}: image package: new function houghlines.m
* {{patch|9509}}: Image package: simple implementation of roipoly function
* {{patch|9509}}: Image package: simple implementation of roipoly function
* {{patch|9593}}: [Octave Forge] (Image) New function demosaic.m from bug #50708
* {{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|9600}}: [Octave Forge] (Image) New functions: lin2rgb.m and lrgb2lin.m
* {{patch|9602}}: multithresh () for the image package
* {{patch|9602}}: [octave forge] (image) multithresh
* {{patch|9603}}: [Octave Forge] (Image) New functions: xyz2double.m, xyz2single.m, xyz2uint16.m
* {{patch|9729}}: [octave forge] (image) -- rgb2xyz conversion with adapted whitepoint
* {{patch|9853}}: [octave forge] (image) implement niftiread, niftiwrite, niftiinfo
* {{patch|9957}}: Nonlinear filter for image package (colfilt2)


== Image Processing Functions ==
== Image Processing Functions ==
Line 394: Line 357:
| multithresh || - || {{patch|9602}} || ||
| multithresh || - || {{patch|9602}} || ||
|-
|-
| otsuthresh || - || {{patch|9360}} || graythresh || otsuthresh(hist) is equivalent to graythresh (hist)
| otsuthresh || 2.10.0 ||   || ||  
|-
|-
| rgb2gray || < 1.0.0 || || ||
| rgb2gray || function is in Octave core || {{bug|53654}} || || Octave version 4.4.0 and above
|-
|-
| rgb2ind  || function is in Octave core  || || ||
| rgb2ind  || function is in Octave core  || || ||
|-
|-
|}
|}
'''Missing:''' ''demosaic''


=== Color ===
=== Color ===
Line 409: Line 370:
|-
|-
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives || Notes
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives || Notes
|-
| lab2double || - || || ||
|-
|-
| lab2rgb || - || || ||  
| colorangle || 2.10.0 || || ||
|-
| 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 || || ||  
|-
|-
| lab2uint16 || - || || ||  
| rgb2lab || 2.6.0  || || ||  
|-
|-
| lab2uint8 || - || || ||  
| rgb2lin || - || {{patch|9600}} || ||
|-
|-
| lab2xyz || - || || ||  
| rgb2ntsc || 2.8.0 || || ||  
|-
|-
| ntsc2rgb || function is in Octave core || || ||  
| rgb2xyz || 2.6.0  || || ||  
|-
|-
| rgb2lab || - || || ||  
| rgb2ycbcr || < 1.0.0|| || ||  
|-
|-
| rgb2ntsc || function is in Octave core || || ||  
| whitepoint || - || {{patch|8060}} || ||
|-
|-
| rgb2xyz || - || || ||  
| xyz2double || - || {{patch|9603}} || ||
|-
|-
| rgb2ycbcr || - || || ||  
| xyz2lab || 2.6.0  || || ||  
|-
|-
| xyz2lab || - || || ||  
| xyz2rgb || 2.6.0  || || ||  
|-
|-
| xyz2rgb || - || || ||  
| xyz2uint16 || - || {{patch|9603}} || ||
|-
|-
| ycbcr2rgb || - || || ||  
| ycbcr2rgb || 2.2.0|| || ||  
|-
|-
|}
|}


'''Missing:''' ''applycform, chromadapt, colorangle, colorcloud, iccfind, iccread, iccroot, iccwrite, illumgray, illumpca, illumwhite, imapprox, isicc, lin2rgb, makecform, rgb2lin, whitepoint, xyz2double, xyz2uint16''
'''Missing:''' ''applycform, chromadapt, colorcloud, iccfind, iccread, iccroot, iccwrite, illumgray, illumpca, illumwhite, imapprox, isicc, makecform''


=== Synthetic Images ===
=== Synthetic Images ===
Line 446: Line 419:
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives || Notes
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives || Notes
|-  
|-  
| checkerboard || - || || ||
| checkerboard || 2.2.0 || || ||
|-
|-
| imnoise || - || || ||
| imnoise || 2.2.2  || || ||
|-
|-
| phantom || - || || ||
| phantom || 2.6.2  || || ||
|-
|-
|}
|}
Line 462: Line 435:
| imshow || function is in Octave core || || ||
| imshow || function is in Octave core || || ||
|-
|-
| montage || - || || ||
| montage || 2.2.0 || || ||
|-
| imfuse || 2.14.0 || || ||
|-
| imshowpair || 2.14.0 || || ||
|-
|}
 
'''Missing:''' '' immovie, implay, iptgetpref, iptprefs, iptsetpref, warp''
 
=== Geometric Transformations ===
 
{| class="wikitable" style="text-align: center"
|-
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives || Notes
|-
| affine2d || 2.14.0 || || ||
|-
| affine3d || 2.14.0 || || ||
|-
| cp2tform || 2.2.0 || || ||
|-
| imcrop || 2.0.0 || || ||
|-
| impyramid || 2.6.0 || || ||
|-
| imref2d || 2.12.0 || || ||
|-
| imref3d || 2.12.0 || || ||
|-
| imrotate || <1.0.0 || || ||
|-
| imtranslate || <1.0.0 || || || incompatible to Matlab's imtranslate
|-
| maketform || 2.2.0 || || ||
|-
| tformfwd || 2.2.0 || || ||
|-
| tforminv || 2.2.0 || || ||
|-
|-
|}
|}


'''Missing:''' ''imfuse, immovie, implay, imshowpair, iptgetpref, iptprefs, iptsetpref, warp''
'''Missing:''' '' imwarp''


=== Image Filtering ===  
=== Image Filtering ===  
Line 480: Line 492:
| convmtx2 || -  || || ||
| convmtx2 || -  || || ||
|-
|-
| entropyfilt ||  1.0.9  ||  {{patch|9235}} || ||
| entropyfilt ||  1.0.9  ||  || ||
|-
|-
| fibermetric ||-  || || ||
| fibermetric ||-  || || ||
Line 518: Line 530:
| integralBoxFilter3 ||- || || ||
| integralBoxFilter3 ||- || || ||
|-
|-
| integralImage ||- || || [http://kyamagu.github.io/mexopencv/matlab/integral.html cv.integral] from [https://github.com/kyamagu/mexopencv mexopencv] ||
| integralImage || 2.12.0 || || ||
|-
|-
| integralImage3 || - || || ||
| integralImage3 ||  2.12.0  || || ||
|-
|-
| medfilt2 || < 1.0.0  || {{patch|9235}} || ||
| medfilt2 || < 1.0.0  || || ||
|-
|-
| medfilt3 || - || || ||
| medfilt3 || - || || ||
Line 530: Line 542:
| normxcorr2 || 2.0.0 ||  {{bug|50151}} || ||
| normxcorr2 || 2.0.0 ||  {{bug|50151}} || ||
|-
|-
| ordfilt2 || 1.0.9 ||  {{patch|9235}} || ||
| ordfilt2 || 1.0.9 ||  || ||
|-
|-
| padarray || < 1.0.0 || || ||
| padarray || < 1.0.0 || || ||
|-
|-
| rangefilt || 1.0.9 || {{bug|45088}} {{patch|9235}} || ||
| rangefilt || 1.0.9 || {{bug|45088}} || ||
|-
|-
| stdfilt ||  1.0.9 ||  {{patch|9235}} || ||
| stdfilt ||  1.0.9 ||  || ||
|-
|-
| wiener2 ||  dev || || ||
| wiener2 ||  2.8.0|| || ||
|-
|-
|}
|}
Line 552: Line 564:
| imadd         || 2.0.0  || || ||
| imadd         || 2.0.0  || || ||
|-
|-
| imapplymatrix ||   -    || || ||
| imapplymatrix || 2.14.0  || || ||
|-
|-
| imcomplement || 1.0.6  || || ||
| imcomplement || 1.0.6  || || ||
Line 558: Line 570:
| imdivide || 2.0.0  || || ||
| imdivide || 2.0.0  || || ||
|-
|-
| imlincomb || 2.0.0  || {{bug|50783}} || ||
| imlincomb || 2.0.0  || || ||
|-
|-
|  immultiply || 2.0.0  || || ||
|  immultiply || 2.0.0  || || ||
Line 581: Line 593:
|-
|-
|  bwmorph || < 1.0.0        ||  {{bug|51884}} || ||
|  bwmorph || < 1.0.0        ||  {{bug|51884}} || ||
|-
|  bwpack ||  2.10.0    || || ||
|-
|  bwunpack ||  2.10.0    || || ||
|-
|-
|  bwulterode ||  --    || || ||
|  bwulterode ||  --    || || ||
Line 596: Line 612:
|  imerode ||  < 1.0.0      || || ||
|  imerode ||  < 1.0.0      || || ||
|-
|-
| imextendedmax ||     dev ||  {{patch|9488}}|| ||
| imextendedmax ||   2.8.0 ||  || ||
|-
|-
|  imextendedmin ||    dev || {{patch|9488}} || ||
|  imextendedmin ||    2.8.0 || || ||
|-
|-
| imfill ||  2.6.0      || || ||
| imfill ||  2.6.0      || || ||
|-
|-
| imhmax ||   dev || {{patch|9488}}|| ||
| imhmax ||     2.8.0 || || ||
|-
|-
| imhmin ||   dev || {{patch|9488}} || ||
| imhmin ||     2.8.0 ||   || ||
|-
|-
|  imimposemin ||   dev ||  {{patch|9488}}|| ||
|  imimposemin ||     2.8.0 ||  || ||
|-
|-
|  imopen ||  < 1.0.0      || || ||
|  imopen ||  < 1.0.0      || || ||
Line 628: Line 644:
|}
|}


[[Category:Octave-Forge]]
=== Image Transforms ===
 
{| class="wikitable" style="text-align: center"
|-
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives || Notes
|-
| dct2 ||  - || || ||
|-
| dctmtx || -  || || ||
|-
| fanbeam || -  || || ||
|-
| fan2para ||  - || || ||
|-
| fftshift|| part of core Octave  || || ||
|-
| fft2  || part of core Octave  || || ||
|-
| hough || 2.8.0  || || ||
|-
| houghlines || 2.10.0  || || ||
|-
| houghpeaks || 2.10.0  || || ||
|-
|idct2 ||  - || || ||
|-
|ifftshift|| part of core Octave  || || ||
|-
|ifft2|| part of core Octave  || || ||
|-
|iradon|| <1.0.0  || || ||
|-
|para2fan|| - || || ||
|-
|radon|| <1.0.0  || || ||
|-
|}
 
=== 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]]
204

edits

Navigation menu