SMIL  1.0.4
Parsimonious Path Opening

Parsimonious incomplete-path openings. More...

Detailed Description

Parsimonious incomplete-path openings.

Implements Parsimonious Incomplete-Path Openings using the Rank Opening (See Pierre Soille [17] and Petr Dokladal [6]).

The rank opening is implemented as a rank filter followed by a dilation. It uses histograms.

Author
Petr Dokladal (based on Vincent Morard code),
Jose-Marcio Martins da Cruz (port to Smil)
Example of use
#!/usr/bin/python
import time
import smilPython as smil
from PIL import Image
import numpy as np
import pdb
def ImageFromArray(im_arr):
im = smil.Image(*im_arr.shape[::-1])
im_np = im.getNumArray()
im_np[:] = im_arr.transpose()[:]
return im
in_file = "init.png"
Size = 20
tolerance = 2
step = 10
NN = 100
img = Image.open(in_file)
XX, YY = img.size
img_out = np.zeros((YY, XX), np.uint8)
for yy in np.arange(0, YY, NN):
for xx in np.arange(0, XX, NN):
img_ii = np.array(img)[yy:min(yy + NN, YY),
xx:min(xx + NN, XX)].transpose()
im_in = smil.Image(*img_ii.shape)
im_in_np = im_in.getNumArray()
im_in_np[:] = img_ii[:]
im_out = smil.Image(im_in)
smil.parsimoniousPathOpening(im_in, Size, tolerance, step,
False, im_out)
im_out_np = im_out.getNumArray().transpose()
img_out_slice = img_out[yy:min(yy + NN, YY), xx:min(xx + NN, XX)]
img_out_slice[:] = im_out_np[:]
img_reconstr = ImageFromArray(img_out)
img_out = ImageFromArray(img_out)
im_in = ImageFromArray(np.array(img))
smil.geoBuild(img_out, im_in, img_reconstr)
smil.write(img_out, "init_path_open.png")
smil.write(img_reconstr, "init_path_open_reconstr.png")
Main Image class.
Definition: DImage.hpp:57
RES_T parsimoniousPathOpening(Image< T > &imIn, int Size, int tolerance, int step, bool rebuild, Image< T > &imOut)
parsimoniousPathOpening
Definition: FastIncompletePathOpening.hpp:664
RES_T geoBuild(const Image< T > &imIn, const Image< T > &imMask, Image< T > &imOut, const StrElt &se=DEFAULT_SE)
geoBuild() - Geodesic Reconstruction
Definition: DMorphoGeodesic.hpp:144
RES_T write(const Image< T > &image, const char *filename)
Write image into file.
Definition: DImageIO.hxx:184
+ Collaboration diagram for Parsimonious Path Opening:

Functions

template<class T >
RES_T parsimoniousPathOpening (Image< T > &imIn, int Size, int tolerance, int step, bool rebuild, Image< T > &imOut)
 parsimoniousPathOpening More...
 
template<class T >
RES_T parsimoniousPathOpening (Image< T > &imIn, int Size, int tolerance, int step, Image< T > &imOut)
 parsimoniousPathOpening More...
 

Function Documentation

◆ parsimoniousPathOpening() [1/2]

RES_T parsimoniousPathOpening ( Image< T > &  imIn,
int  Size,
int  tolerance,
int  step,
bool  rebuild,
Image< T > &  imOut 
)

parsimoniousPathOpening

Parameters
[in]imIn: input Image
[in]Size: size of Structuring Element
[in]tolerance:
[in]step:
[in]rebuild: do Geodesic Rebuild after PathOpening
[out]imOut: output Image
Warning
This function may be very slow on UINT32 image type.

◆ parsimoniousPathOpening() [2/2]

RES_T smil::parsimoniousPathOpening ( Image< T > &  imIn,
int  Size,
int  tolerance,
int  step,
Image< T > &  imOut 
)

parsimoniousPathOpening

Parameters
[in]imIn: input Image
[in]Size: size of Structuring Element
[in]tolerance:
[in]step:
[out]imOut: output Image