happy_little_trees/MinTree.py

46 lines
1.3 KiB
Python
Executable File

#!/usr/bin/python
# -*- coding: utf-8 -*-
# \file MinTree.py
# \brief TODO
# \author Florent Guiotte <florent.guiotte@gmail.com>
# \version 0.1
# \date 10 oct. 2017
#
# TODO details
from ComponentTree import ComponentTree
import cv2
from scipy.ndimage import label
class MinTree(ComponentTree):
def __init__(self, parent=None, data=None):
super().__init__(parent, data)
def construct(self, value=0):
if self.component is None:
# Then self is groot, set filter to true
self.component = self.data != None
# Donc, tout le monde à le même pointeur sur data. Ensuite il faut
# utiliser component (agit comme un filtre) sur cette data pour
# obtenir le réel CC. Donc appliquer le test de treshold sur cette
# donnée, labéliser les cluster et créer des enfants itérativement
filter = self.data * self.component > value
labels_array, num_features = label(filter)
for i in range(num_features):
child = MinTree(self, self.data)
child.component = labels_array == i + 1
child.construct(value + 1)
self.children.append(child)
def main():
img = cv2.imread('./img/lena.ppm', 0)
t = MinTree(data=img)
t.construct()
print("Done")
if __name__ == "__main__":
main()