Bestimmen Sie den Schwellenwert mithilfe der P-Tile-Methode in Python

Hintergrund

In einer Universitätsvorlesung hatte ich ein Problem damit, den Schwellenwert mithilfe der P-Kachel-Methode zu finden, und implementierte ihn daher mit Python3.

Was ist die p-Kachel-Methode?

Es ist ein Algorithmus, der den Punkt bestimmt, der die Fläche im Histogramm durch X% als Schwellenwert teilt.

Code

 ptile.ipynb



from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
file = "./sample.png "

#Funktion, die einen Schwellenwert zurückgibt
def decideTh(area, ret):
    #Schwelle
    th = 0
    #Hintergrund
    background = 0
    #Flächenverhältnis
    bg_ratio = 1 / 2
    count = 0
    #Ich suche Hintergrund
    for i in ret[0]:
        background += i
        if background == 0:
            ratio = 0
        else:
            ratio = background /area
        #Ersetzen Sie den Helligkeitswert, bis der Hintergrund das Flächenverhältnis überschreitet
        if ratio  <= bg_ratio:
            th = ret[1][count]
        count+=1

    return th

#Eine Funktion, die ein Bild als Histogramm und als Schwellenwert konvertiert
def binari(filename):
    #Bereich des Histogramms
    area = 0
    #Konvertieren Sie das Bild in Graustufen und weisen Sie der Funktion den Helligkeitswert zu
    img = np.array(Image.open(filename).convert("L")).reshape(-1,1)
    #Konvertieren Sie den Helligkeitswert in ein Histogramm und ersetzen Sie ihn
    ret = (plt.hist(img, bins=255))
    #Suchen Sie den Bereich des Histogramms
    for i in ret[0]:
        area += i
    
    th = decideTh(area,ret)
    return th

print(binari(file))

img = np.array(Image.open(filename).convert("L")).reshape(-1,1)
    ret = (plt.hist(img, bins=255))

Für diesen Code zitiere ich @ seigots Anzeigen eines Histogramms der Bildhelligkeitswerte in Python.

Referenz

Binärisierungsfilter für P-Kachel-Methoden

Recommended Posts

Bestimmen Sie den Schwellenwert mithilfe der P-Tile-Methode in Python
Versuchen Sie es mit der Wunderlist-API in Python
Versuchen Sie, die Kraken-API mit Python zu verwenden
Tweet mit der Twitter-API in Python
Lernen Sie das Entwurfsmuster "Vorlagenmethode" in Python
Versuchen Sie es mit der BitFlyer Ligntning API in Python
Ich habe die Methode der kleinsten Quadrate in Python ausprobiert
Dynamisches Ersetzen der nächsten Methode in Python
Lernen Sie das Entwurfsmuster "Factory Method" in Python
Verarbeiten Sie den Index in Python mit dem ScriptUpdateProcessor von Solr vor
Versuchen Sie, die Monte-Carlo-Methode in Python zu implementieren
Versuchen Sie, die DropBox Core-API mit Python zu verwenden
Simplex-Methode (Einzelmethode) in Python
Private Methode in Python
[AWS IoT] Registrieren Sie Dinge in AWS IoT mithilfe des AWS IoT Python SDK
Grundeinstellungen bei Verwendung der foursquare-API mit Python
Verwenden Sie die Such-API der National Parliament Library in Python
Approximieren Sie eine Bezier-Kurve durch einen bestimmten Punkt mit der Methode der kleinsten Quadrate in Python
Das Unterdrücken von Methodenüberschreibungen in Python
Übersetzt mit Googletrans in Python
Verwenden des Python-Modus in der Verarbeitung
Verwendung der Methode __call__ in der Python-Klasse
Holen Sie sich den MIME-Typ in Python und bestimmen Sie das Dateiformat
[Python] LASSO-Regression mit Gleichungsbeschränkung unter Verwendung der Multiplikatormethode
Lösen Sie das japanische Problem, wenn Sie das CSV-Modul in Python verwenden.
Ich habe den Dollar-Yen mit der k-medoids-Methode in Python geclustert und die richtige Antwortrate gefunden.
Bestimmen Sie das Datums- und Uhrzeitformat mit Python und konvertieren Sie es in Unixtime
GUI-Programmierung in Python mit Appjar
Abrufen der arXiv-API in Python
Vorsichtsmaßnahmen bei der Verwendung von Pit mit Python
Python Hinweis: Stellen Sie fest, ob das Befehlszeilenargument in der Liste enthalten ist
Python im Browser: Brythons Empfehlung
Speichern Sie die Binärdatei in Python
Python-Anfänger haben Hello World in 30 Sekunden mit der Mikroframework-Flasche ausprobiert
Holen Sie sich den Desktop-Pfad in Python
Versuchen Sie es mit LevelDB mit Python (plyvel)
Holen Sie sich den Skriptpfad in Python
Im Python-Befehl zeigt Python auf Python3.8
Implementieren Sie das Singleton-Muster in Python
Eine Funktion, die die Verarbeitungszeit einer Methode in Python misst
Implementierte Methode zur Weitergabe von Etiketten in Python
Verwendung globaler Variablen in Python-Funktionen
Simulieren Sie die Monte-Carlo-Methode in Python
Klicken Sie auf die Web-API in Python
Mal sehen, wie man Eingaben in Python verwendet
Gesamtleistung in Python (mit Funktools)
Hash-Methode (Open-Address-Methode) in Python
Extrahieren Sie die Targz-Datei mit Python
Ich habe die Warteschlange in Python geschrieben
Berechnen Sie den Vormonat in Python
Untersuchen Sie die Klasse eines Objekts mit Python
Holen Sie sich den Desktop-Pfad in Python
Versuchen Sie es mit dem Python Cmd-Modul
Holen Sie sich den Hostnamen in Python
Handschriftliche Zeichenerkennung mit KNN in Python