Changes

Jump to navigation Jump to search

Image package

12,949 bytes added, 10 June
m
Remove redundant Category:Packages.
The {{Forge|image|image package}} is part of the octave-forge Octave Forge project.See its {{Forge|image|homepage}} for the latest release. <div class="tocinline">__TOC__</div>
== 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.
 
=== Roadmap ===
 
The following are missing targets for the next minor release of the image package (version 2.4.0). Small bug fixes, build fixes, and regressions may still be released before in a patch release (next would be version 2.2.3).
 
* add ellipse properties to {{codeline|regionprops}} (see bug {{bug|44100}})
* speed up {{codeline|regionprops}} for large images with many small objects (probably work around for loop with {{codeline|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}}
* fix imadjust for other image types (only works for double on the [0 1] range at the moment)
* anything else that is done or submitted before the above are done
=== Missing functions ===
* activecontour
* adapthisteq
* [https://savannah.gnu.org/patch/?8824 affine2d]
* affine3d
* applycform
* axes2pix
* bwconvhull
* bwdistgeodesic
* bwlookup
* bwpack
* bwtraceboundary
* bwulterode
* bwunpackchromadapt* colorcloud
* convmtx2
* corner
* dct2
* dctmtx
* imbinarize
* deconvblind
* deconvlucy
* deconvreg
* [https://savannah.gnu.org/patch/?9365 deconvwnr]
* decorrstretch
* [https://savannah.gnu.org/patch/?9593 demosaic]
* dicomanon
* dicomdisp
* dicomuid
* dpxinfo
* dpxread
* dpxinfo
* fan2para
* fanbeam
* getrect
* gradientweight
* grayconnected
* graycoprops
* grayconnected
* graydiffweight
* hdrread
* hdrwrite
* hough -- (see hough_circle)
* houghlines -- (see hough_line)
* houghpeaks
* iccfind
* iccread
* idct2
* ifanbeam
* illumgray
* illumpca
* illumwhite
* im2java2d
* ImageAdapter
* imageinfo
* [https://savannah.gnu.org/patch/?9717 imapplymatrix]
* imapprox
* imbinarize
* imboxfilt
* imboxfilt3
* imdistline
* imellipse
* imextendedmax
* imextendedmin
* imfill -- (see bwfill)
* imfindcircles
* imfreehand
* imfuse
* imhandles
* imhistmatch
* imhmax
* imhmin
* imimposemin
* imline
* immagbox
* imoverview
* imoverviewpanel
* [https://savannah.gnu.org/patch/?8722 impixelinfo]* [https://savannah.gnu.org/patch/?8722 impixelinfoval]* impixelregion
* impixelregionpanel
* impixelregion
* implay
* impoint
* impoly
* improfile
* impyramid
* imquantize
* imrect
* imref2d
* imsegfmm
* imseggeodesic
* imsharpen
* imshowpair
* imtool
* integralBoxFilter
* integralBoxFilter3
* [https://savannah.gnu.org/patch/?9606 integralImage]
* integralImage3
* interfileinfo
* isicc
* isrset
* lab2double* lab2rgb* lab2uint16* lab2uint8* lab2xyz[https://savannah.gnu.org/patch/?9600 lin2rgb]
* makecform
* makeConstrainToRectFcn
* makehdr
* makeresampler
* [https://savannah.gnu.org/patch/?9602 multithresh]
* nitfinfo
* nitfread
* projective2d
* regionfill
* rgb2lin
* roifill
* rgb2lab
* rgb2xyz
* roifilt2
* [https://savannah.gnu.org/patch/?9509 roipoly]
* rsetwrite
* ssim
* truesize
* visboundaries
* viscircles
* warp
* [https://savannah.gnu.org/patch/?8060 whitepoint]* wiener2* [https://savannah.gnu.org/patch/?9603 xyz2double]* xyz2lab* xyz2rgb* [https://savannah.gnu.org/patch/?9603 xyz2uint16]
</div>
* imcrop
** messing around with alternative coordinate systems (XData and YData) are not yet implemented.
* imwrap
** no supports for SmoothEdges option
* hough
** no RhoResolution option
=== 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.
=== 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|9606}}: [Octave forge] (image) New function integralImage* {{patch|9717}}: [octave forge] (image) new function imapplymatrix* {{patch|9722}}: [octave forge] (image) new objects imref2d and imref3d* {{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