46 lines
1.3 KiB
Python
Executable File
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()
|