Analyser une image avec python

Thierry HUET - v0.0 - 07/2023 pour APERTO-NOTA

[51]:
import matplotlib.pyplot as plt
import numpy
from scipy import ndimage
from skimage import measure

Charge les modules permettant d’analyser les données.

[52]:
class generate:
    def __init__(self) -> None:
        pass

    def getData(self, fn) -> numpy.ndarray:
        """
        Lit les données présentes dans le fichier CSV
        """
        data: numpy.ndarray | None = None
        data = numpy.genfromtxt(fn, delimiter=",")
        return data

    def filter(self, img):
        data = ndimage.gaussian_filter(img, sigma=3)
        return data

    def main(self) -> None:
        fn: str = "data/View005 Ca K.csv"
        data: numpy.ndarray = self.getData(fn)

        # Affiche les données sous forme d'image
        imgplot = plt.imshow(data)

        pres = self.filter(data)
        plt.imshow(pres)

Affichage de l’image brute

[53]:
g = generate()
img = g.getData("data/View005 Ca K.csv")
plt.imshow(img)
[53]:
<matplotlib.image.AxesImage at 0x7efc04273ca0>
../../_images/travaux_code_data_imgproc_5_1.png

Filtrage du linéage

[54]:
filt_1 = g.filter(img)
plt.imshow(filt_1)
[54]:
<matplotlib.image.AxesImage at 0x7efc041551c0>
../../_images/travaux_code_data_imgproc_7_1.png

Recherche des maximum locaux

[66]:
image_max = ndimage.maximum_filter(img, size=5, mode="constant")
plt.imshow(image_max)
[66]:
<matplotlib.image.AxesImage at 0x7efc02fbd310>
../../_images/travaux_code_data_imgproc_9_1.png

Affichage des contours

[62]:
plt.imshow(filt_1)
plt.contour(filt_1, levels=[1000, 5000, 10000, 15000, 200001])
[62]:
<matplotlib.contour.QuadContourSet at 0x7efc02e62fa0>
../../_images/travaux_code_data_imgproc_11_1.png