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.
import time
import smilPython as smil
from PIL import Image
import numpy as np
import pdb
def ImageFromArray(im_arr):
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_np = im_in.getNumArray()
im_in_np[:] = img_ii[:]
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.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