Bildverarbeitung – basierend auf der Pixelebene

Python-Bildschärfung

Durch die Bildschärfung können die Bildränder klarer gemacht und die Bilddetails hervorgehoben werden. Zu den gängigen Bildschärfungsalgorithmen gehören der Laplace-Operator, der Sobel-Operator, der Prewitt-Operator usw. Das Folgende ist der Python-Code für die Bildschärfung mithilfe des Laplace-Operators:

import cv2
import numpy as np

def laplacian_sharpen(img, ksize=3):
    # 创建拉普拉斯算子核
    kernel = np.array([[-1, -1, -1], [-1, ksize+8, -1], [-1, -1, -1]])
    # 对图像进行滤波
    result = cv2.filter2D(img, -1, kernel)
    # 将像素值限制在0~255之间
    result[result < 0] = 0
    result[result > 255] = 255
    # 将图像转换为整数类型,并返回结果
    return result.astype(np.uint8)

# 加载原始图像
img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
# 进行图像锐化处理
result = laplacian_sharpen(img)
# 显示原始图像和结果图像
cv2.imshow('Original Image', img)
cv2.imshow('Sharpened Image', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

Der Code verwendet den Laplace-Kernel, um das Bild zu filtern und die Bildränder zu verbessern. Es ist zu beachten, dass der Laplace-Operator die hochfrequenten Details des Bildes verbessert und auch das Bildrauschen erhöht, sodass er entsprechend der spezifischen Situation in der praktischen Anwendung angepasst werden muss.

Renderings: 

 

Bildverbesserung bei Nacht mithilfe eines neuen Algorithmus zur Beleuchtungsverbesserung – Artikel „Bildverbesserung bei Nacht mithilfe eines neuen Algorithmus zur Beleuchtungsverstärkung“

Renderings: 

 Dieser Blog enthält viele Algorithmen zur Bildverbesserung bei Nacht

(70 Nachrichten) Zusammenfassung der Bildverbesserungsalgorithmen bei schwachem Licht_Bildverbesserungsalgorithmus bei schwachem Licht_Wanderer001's Blog-CSDN-Blog

 

Aktuelle Fortschritte bei Bildverarbeitungsalgorithmen

Hintergrund

Heutzutage, wo Deep Learning populär ist, scheint es, dass im Bereich der Computer Vision nur noch die Stimme des maschinellen Lernens/Deep Learning übrig ist und der Schwerpunkt der Forschung auf tiefe Netzwerke, Bildklassifizierung, Erkennung, Verfolgung und Segmentierung beschränkt zu sein scheint , Re-Identifizierung und andere Probleme. , Bildverarbeitung scheint zu einer Antiquität des letzten Jahrhunderts geworden zu sein. Tatsächlich treten mit der Geschäfts- und Anwendungsentwicklung, wenn Computer Vision das Labor verlässt und in verschiedene Anwendungsszenarien Einzug hält, ihre Grenzen und Engpässe zutage. Nehmen Sie einfach die folgenden tatsächlichen Szenarien als Beispiele:

  1. Wenn beim Zielerkennungsproblem die Beleuchtung/der Kontrast des lokalen Bereichs in der Szene gering ist, führt die Farbverzerrung (Farbverzerrung) zu einer fehlenden oder falschen Erkennung und zu einer zusätzlichen Kennzeichnung von Szenen mit geringer Beleuchtung und Farbverzerrung Es kann zu Engpässen aufgrund von Kennzeichnungskosten, Schwierigkeiten bei der Datenerfassung und anderen Problemen kommen.
  2. Bei der Identifizierung menschlicher Körpermerkmale ist es schwierig, die Kleidungsfarbe von Fußgängern zu definieren und zu kennzeichnen. Die Kleidung der Menschen ist oft nicht einfarbig, sondern hauptsächlich ein- oder zweifarbig, kombiniert mit Texturen und Mustern in anderen Farben. Dies führt zu Schwierigkeiten bei der Farbklassifizierung von Fußgängerkleidung aus dem Kennzeichnungsteil. Ein ähnliches Problem ist die Farbklassifizierung von Fahrwerkzeugen (Motorräder/Elektrofahrzeuge usw.).
  3. Beim Problem der erneuten Identifizierung von Fußgängern weist die Farbe desselben menschlichen Körpers in verschiedenen Szenen unterschiedliche Abweichungsgrade auf, was sich auf die Genauigkeit der erneuten Identifizierung auswirkt. Wenn sie leicht angepasst werden kann, ist eine Verbesserung möglich die Genauigkeit des Algorithmus.

Zusammenfassend handelt es sich bei den oben genannten drei Beispielen um Beispiele, bei denen die Kosten für die Datenerfassung und -kennzeichnung relativ hoch sind und die gleichzeitig auftretenden Probleme zu Beginn des Algorithmusentwurfs schwer vorherzusagen sind. In diesen drei Beispielen ist es nicht unmöglich, den Umfang der Kennzeichnung des Problems zu erweitern, aber der zeitliche und finanzielle Aufwand sollte nicht unterschätzt werden. Wenn der Bildverarbeitungsalgorithmus zur ordnungsgemäßen Anpassung der Daten verwendet werden kann, können zusätzliche Probleme durch neue Anmerkungen und Datenerfassung vermieden werden. Für die oben genannten drei Beispiele kommen beispielsweise die folgenden Methoden in Betracht:

  1. Wenn eine lokale Beleuchtung/Kontrastverstärkung oder Farbkorrektur für dunklere Szenen angemessen durchgeführt werden kann, entfällt der Aufwand für die Beschriftung und Datenerfassung vollständig.
  2. Wenn es möglich ist, die Gesamtstruktur und die Kunst des Fußgängers zu trennen und nur die Hauptstrukturinformationen beizubehalten, sollten die Hauptfarben beibehalten werden, was für die Beschriftung praktisch ist.
  3. Die Genauigkeit wird verbessert, wenn die richtigen Farbanpassungen vorgenommen werden können.

Zusammenfassend lässt sich sagen, dass die derzeit gängigen Deep-Learning-Algorithmen Daten als „schwer“ bezeichnen und die Verteilung von Bildern in komplexen Szenen häufig weder ideal noch „regelmäßig“ ist (z. B. ist die Katzenklassifizierung ein „normales Problem“) Es gibt nur zwei Kategorien: „Katze“ und „Nicht-Katze“, und es gibt keinen Zwischenzustand; während „dunklerer Bereich“ und „Fellfarbe des Fußgängers“ „unregelmäßige Fragen“ sind, da die Antwort nicht „Ja/Nein“ sein kann gehen Sie nur nach oben). Obwohl das tiefe Netzwerk über eine enorme Kapazität verfügt und Datenunregelmäßigkeiten weitestgehend tolerieren kann, treten in einigen besonderen Fällen dennoch Probleme auf. Wenn wir Bildverarbeitungsmethoden verwenden können, um diese „unregelmäßigen“ Daten zu korrigieren und die gewünschten Teile hervorzuheben, können wir unser Ziel besser erreichen.

Darüber hinaus ist die Bildverarbeitung mit der Weiterentwicklung der Computer-Vision-Technologie immer ausgefeilter geworden und es gibt immer mehr Muster und Kategorien. Es ist an sich schon eine erfreuliche Sache, darüber zu diskutieren und es zu klären.

Beleuchtungs-/Kontrastverbesserung

 Ying Z, Li G, Ren Y, et al. Ein neuer Algorithmus zur Bildkontrastverbesserung unter Verwendung des Exposure Fusion Framework[C]//Internationale Konferenz zur Computeranalyse von Bildern und Mustern. Springer, Cham, 2017: 36-46.        

Wissen – Sicherheitszentrum https://link.zhihu.com/?target=http%3A//openaccess.thecvf.com/content_ICCV_2017_workshops/papers/w43/Ying_A_New_Low-Light_ICCV_2017_paper.pdf

Chen, Chen et al. Lernen, im Dunkeln zu sehen.arXiv-Vorabdruck arXiv:1805.01934 (2018).

SID​cchen156.web.engr.illinois.edu/SID.htmlUploading... Erneut hochladen, um abzubrechen icon-default.png?t=N176https://link.zhihu.com/?target=http%3A//cchen156.web.engr.illinois.edu /SID.html

http://cchen156.web.engr.illinois.edu/paper/18CVPR_SID.pdf​cchen156.web.engr.illinois.edu/paper/18CVPR_SID.pdf icon-default.png?t=N176https://link.zhihu.com/?target=http% 3A//cchen156.web.engr.illinois.edu/paper/18CVPR_SID.pdf

zu beschlagen

Beschleunigung von Bildverarbeitungsoperatoren

  • Chen, Jiawen et al. Bilaterales geführtes Upsampling .“ ACM Transactions on Graphics (TOG) 35.6 (2016): 203.

https://people.csail.mit.edu/hasinoff/pubs/ChenEtAl16-bgu.pdf​people.csail.mit.edu/hasinoff/pubs/ChenEtAl16-bgu.pdf icon-default.png?t=N176https://link.zhihu.com/? target=https%3A//people.csail.mit.edu/hasinoff/pubs/ChenEtAl16-bgu.pdf

  • Er, Kaiming, Jian Sun und Xiaoou Tang. Geführte Bildfilterung .“ IEEE-Transaktionen zu Musteranalyse und maschineller Intelligenz 6 (2013): 1397-1409.

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.649.2027&rep=rep1&type=pdf​citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.649.2027&rep=rep1&type= pdf icon-default.png?t=N176https://link.zhihu.com/?target=http%3A//citeseerx.ist.psu.edu/viewdoc/download%3Fdoi%3D10.1.1.649.2027%26rep%3Drep1%26type%3Dpdf

 

Anzeige und Analyse des Retinex-Algorithmuseffekts

Fügen Sie hier eine Bildbeschreibung ein
Die obige Abbildung zeigt die Auswirkung des Retinex-Algorithmus auf einige reale Daten. Das Obige zeigt hauptsächlich den Verbesserungseffekt des Algorithmus auf einige Dokumente. Die 5 Bilder in der ersten Zeile stellen die ursprünglichen Eingabebilder dar, und die 5 Bilder in der zweiten Zeile stellen den verbesserten Effekt nach Verwendung des Retinex-Algorithmus dar. Durch Beobachtung können wir feststellen, dass der Algorithmus nicht nur die Helligkeitsinformationen des Bildes verbessern, sondern auch einen Teil der Schatteninformationen im Bild entfernen kann; die Berechnungsgeschwindigkeit des Algorithmus ist jedoch relativ langsam und kann nicht auf einige reale angewendet werden Zeitszenen.

 Zusammenfassung der Forschungsergebnisse zur Objekterkennung in Bildern bei schlechten Lichtverhältnissen – Tencent Cloud Developer Community – Tencent.com

Zusammenfassung der Forschungsergebnisse zur Objekterkennung in Bildern bei schlechten Lichtverhältnissen – Tencent Cloud Developer Community – Tencent.com 

1. Vor tiefem Lernen

1、Eine neuartige Methode zur Kompensation verschiedener Beleuchtungsverhältnisse bei der Gesichtserkennung

In diesem Artikel werden einige traditionelle Methoden vorgestellt, die auf dem räumlichen Bereich basieren. Nach der Verwendung von LogAbout zur Lichtkompensation wird die korrekte Erkennungsrate deutlich verbessert. Diese Idee kann das Problem der Lichtkompensation schnell und effektiv lösen und eignet sich für die automatische Gesichtserkennung und Gesichtsverfolgung in Echtzeit. Die in diesem Artikel vorgeschlagene Idee von LogAbout ist auch für die allgemeine Bildverarbeitung sowie die Objekterkennung und -erkennung hilfreich .

2、Ein Image-Range Fusion-Fußgängererkennungssystem bei schlechten Lichtverhältnissen

In diesem Artikel schlagen wir ein Image-Range Fusion System (IRFS) vor, das sowohl Bilddaten als auch Entfernungsdaten anwendet. Für den Bildteil wird ein DIO-Detektor (Dynamic Illuminated Object) vorgeschlagen, um das Problem zu überwinden, das durch teilweise unsichere Lichtverhältnisse verursacht wird. Konkret wendet der DIO-Detektor zwei Arten von Funktionen an, darunter das Histogram of Oriented Gradients (HOG) zur Darstellung von Forminformationen und das Logarithmic Weighted Pattern (LWP) zur Modellierung von Texturinformationen.

3、Automatische Erkennung und Erkennung menschlicher Gesichter bei ungleichmäßiger Beleuchtung

In diesem Artikel wird ein automatisches Gesichtserkennungs- und -erkennungssystem vorgeschlagen. Der Prozess umfasst fünf Schritte: (1) Haar-Wavelet-Transformation, (2) Gesichtskantenerkennung, (3) Symmetrieachsenerkennung, (4) Gesichtserkennung und (5) Gesichtserkennung . Schritt 1 zerlegt das Eingabebild, um die Bildredundanz zu reduzieren. Schritt 2 verwendet Kanteninformationen, um Nicht-Gesichtsbereiche auszuschließen, während Schritt 3 Verlaufsrichtungen verwendet, um Gesichtsbereiche weiter einzugrenzen. Schritt 4 schränkt die gesichtsähnlichen Bereiche durch Vorlagenabgleich ein. Schließlich bestimmt der fünfte Schritt die beste Gesichtsposition im gesichtsähnlichen Bereich und führt eine Gesichtserkennung basierend auf der Hauptkomponentenanalyse durch. Das System zeigt eine bemerkenswerte Robustheit bei ungleichmäßigen Lichtverhältnissen.

4、Erkennungsalgorithmus für Farbbilder durch mehrere Überwachungskameras bei geringer Beleuchtung basierend auf einer unscharfen entsprechenden Karte

Mit dem Ziel, ein reales Überwachungssystem bei schwacher Beleuchtung zu verwenden, wird in diesem Artikel ein Algorithmus zur dynamischen Bildzielerkennung mit zwei Kameras in Farbe vorgeschlagen. Es bietet Fuzzy-Korrespondenzkarten und eine automatische Berechnung der Farbähnlichkeit bei schlechten Lichtverhältnissen und erkennt kleine farbige Bereiche in CCD-Kamerabildern bei schlechten Lichtverhältnissen. Die experimentellen Erkennungsergebnisse zweier dynamischer Bilder, die von einer echten Überwachungskamera in einem Stadtzentrum in Japan unter Bedingungen geringer Helligkeit aufgenommen wurden, zeigen, dass bei gleicher Fehlalarmrate die Genauigkeit des Algorithmus im Vergleich zur unabhängigen Erkennung um 15 % erhöht ist Algorithmus und diskutiert die Realisierbarkeit des Algorithmus bei starker Überwachung. Der vorgeschlagene Algorithmus wird für ein kostengünstiges Überwachungssystem in einem relativ unsicheren Stadtgebiet (Einkaufszentrum) in Japan in Betracht gezogen.

5、Gesichtserkennung mit der modifizierten Volkszählungstransformation

Beleuchtungsschwankungen sind ein großes Problem bei der Objekterkennung und erfordern oft eine teure Kompensation vor der Klassifizierung. Für einen effizienten Abgleich ist eine Bild-zu-Bild-Transformation wünschenswert, die nur die Struktur des Objekts offenlegt. In dieser Hinsicht leistet die Arbeit in diesem Artikel einen doppelten Beitrag. Zunächst werden in diesem Artikel beleuchtungsinvariante lokale Strukturmerkmale für die Objekterkennung vorgestellt. Um die Recheneffizienz zu verbessern, schlägt dieses Papier eine verbesserte Volkszählungstransformation vor, die die ursprüngliche Arbeit von Zabi und Woodfill [10] verbessert. Dieser Artikel zeigt einige Mängel und wie man diese mit einer modifizierten Version beheben kann. Zweitens stellt dieser Artikel einen effizienten vierstufigen Klassifikator für eine schnelle Erkennung vor. Jeder einstufige Klassifikator ist ein linearer Klassifikator, der aus einer Reihe von Merkmalssuchtabellen besteht. Wir zeigen, dass in der ersten Stufe nur 20 Features ausgewertet werden und mehr als 99 % der Hintergrundstandorte herausgefiltert werden. Somit ist die Struktur des Klassifikators viel einfacher als die zuvor beschriebenen mehrstufigen Methoden, weist jedoch ähnliche Fähigkeiten auf. Durch die Kombination von beleuchtungsinvarianten Merkmalen mit einem einfachen Klassifikator entstand ein Echtzeitsystem auf einem Standardcomputer (60 Sekunden, Bildgröße: 288×384, 2GHz Pentium). Die Erkennungsergebnisse werden in zwei in diesem Bereich häufig verwendeten Datenbanken angezeigt: 130 Bilder von MIT+CMU und 1526 Bilder von Biomarkern. Dieses Papier erreicht eine Erkennungsrate von über 90 % und eine äußerst niedrige Falsch-Positiv-Rate von 10-7 %. Wir stellen auch ein Demoprogramm zur Verfügung, das Sie im Internet unter http://www.iis.fraunhofer.de/bv/biometrie/download/ finden.

6、Bilderkennung bei schwacher Beleuchtung

Die Bilderkennung bei schlechten Lichtverhältnissen wird als Hypothesentestproblem angesehen, bei dem Beobachtungen als Schrotrauschprozess modelliert werden. Da es nicht möglich ist, das Lickley-Hood-Verhältnis für einen Schuss-Lärm-Prozess zu berechnen, schlägt dieser Artikel die Verwendung einer eindimensionalen Teststatistik vor, die durch Filtern und Abtasten der Beobachtungen gewonnen wird. Die Filter werden so ausgewählt, dass das allgemeine Signal-Rausch-Verhältnis maximiert wird. Das Wahrscheinlichkeitsverhältnis einer eindimensionalen Teststatistik wird numerisch ausgewertet, indem die entsprechende charakteristische Funktion unter jeder Hypothese invertiert wird.

2. Nach tiefem Lernen

1、Deep-Learning-basiertes effektives Überwachungssystem für Umgebungen mit geringer Beleuchtung

In diesem Artikel wird ein System vorgestellt, das durch die Kombination eines Bildqualitätsverbesserungsnetzwerks und eines Objekterkennungsnetzwerks dabei hilft, die Qualitätsbilder gängiger Überwachungskameras zu erhalten, die an verschiedenen Orten eingesetzt werden. Dies erhöht die Sicherheit in Bereichen mit wenig Licht in der Nacht. Es könnte auch ein wirksameres Überwachungssystem eingerichtet werden, um die Bedingungen in Bereichen mit wenig Licht zu überwachen. 2. Kennenlernen von Bildern bei schlechten Lichtverhältnissen mit dem Exclusively Dark-Datensatz

Es wird ein Datensatz zur Zielerkennung bei dunklem Licht vorgeschlagen, Download-Link: GitHub – cs-chan/Exclusively-Dark-Image-Dataset: Datensatz „Exclusively Dark“ (ExDARK), der nach unserem besten Wissen die größte Sammlung von Bildern bei schlechten Lichtverhältnissen darstellt in Umgebungen mit sehr wenig Licht bis zur Dämmerung (dh 10 verschiedene Bedingungen), bisher mit Anmerkungen auf Bildklasse und Objektebene.

3、BILDVERARBEITUNGSANSÄTZE FÜR DIE AUTONOME NAVIGATION VON LANDFAHRZEUGEN BEI NIEDRIGER BELEUCHTUNG

Computer Vision kann ein integraler Bestandteil jedes autonomen Systems sein. Visuelle Eingaben und Verarbeitung ermöglichen eine schnellere und frühere Entscheidungsfindung. Eine wichtige Herausforderung beim Computer Vision ist die Objekterkennung und -erkennung. Bei schlechten Lichtverhältnissen ist diese Herausforderung noch ausgeprägter. In diesem Artikel wird ein Erkennungs- und Erkennungsmodell für Verkehrswarnschilder mit Sprachbenachrichtigungssystemen sowohl automatisch als auch in allgemeinen Fahrzeugen unter Berücksichtigung unterschiedlicher Beleuchtungsstärken vorgestellt. Analysieren Sie Live-Videos von Fahrzeugen mit opencv. Mithilfe eines Filters wurde Rauschen aus dem Video entfernt. Die Erkennung basiert auf Haar-Kaskaden und Trainingsproben positiver und negativer Bilder. Die Texterkennung basiert auf Mustervergleich. Sprachansagen werden mithilfe eines String-zu-Sprache-Konverters erstellt. Die Nachtsicht wird beleuchtet, um die Blendung der Fahrzeugscheinwerfer auszugleichen.

4、 Verbesserung bei geringer Beleuchtung zur Objekterkennung beim Selbstfahren*

Die Objekterkennung spielt im Bereich des autonomen Fahrens eine wichtige Rolle. Die Beleuchtung hat einen großen Einfluss auf die Objekterkennung, aber die meisten aktuellen Methoden lösen das Problem der Objekterkennung in Umgebungen mit wenig Licht nicht gut. In diesem Artikel schlagen wir ein wiederkehrendes generatives kontradiktorisches Netzwerk zur Optimierung der Bildtransformation vor. Wir haben das Diskriminatornetzwerk von CycleGAN neu gestaltet, zusätzliche Diskriminatoren hinzugefügt, mehrere Teile des Netzwerks wie Verlustfunktionen optimiert und nach der Netzwerkkonvertierung ein Objekterkennungsnetzwerk hinzugefügt. Die Wirksamkeit der Methode wird anhand des Roboterauto-Datensatzes der Universität Oxford überprüft. Die Ergebnisse zeigen, dass die Methode die Erkennungsgenauigkeit in Umgebungen mit wenig Licht deutlich verbessern und die Anzahl der erkannten Ziele erhöhen kann.

5、Bildverbesserung bei geringer Beleuchtung für die nächtliche UAV-Fußgängererkennung

Um eine zuverlässige Fußgängererkennung mithilfe von UAVs bei Nacht zu erreichen, wird eine Bildverbesserungsmethode vorgeschlagen, um die Bildqualität bei schlechten Lichtverhältnissen zu verbessern. Zunächst wird die Bildhelligkeit über die hyperbolische Tangenskurve auf das gewünschte Niveau abgebildet. Zweitens werden für den Unschärfefilter im YCbCr-Farbraum Blockanpassungs- und 3D-Filtermethoden zur Bildentrauschung und -schärfung vorgeschlagen. Schließlich wird das Faltungs-Neuronale-Netzwerk-Modell zur Fußgängererkennung verwendet, um die Überwachungsaufgabe abzuschließen. Die experimentellen Ergebnisse zeigen, dass der Minkowski-Distanzmaßindex des verbesserten Bildes auf 0,975 erhöht wird und die Erkennungsgenauigkeit 0,907 bzw. 0,840 erreicht, was den höchsten Wert unter anderen Bildverbesserungsmethoden darstellt. Die Methode ist potenziell wertvoll für die nächtliche visuelle UAV-Überwachung in Smart-City-Anwendungen.

6、Nächtliche Fahrzeugerkennung basierend auf bioinspirierter Bildverbesserung und gewichteter Feature-Fusion auf Score-Ebene

In diesem Artikel wird ein effizientes Fahrzeugerkennungssystem bei Nacht vorgeschlagen, das eine neuartige, bioinspirierte Bildverbesserungsmethode und eine gewichtete Merkmalsfusionstechnik kombiniert. Inspiriert durch retinale Mechanismen bei der natürlichen visuellen Verarbeitung entwickelt dieser Artikel eine Methode zur nächtlichen Bildverbesserung durch Modellierung des adaptiven Feedbacks von horizontalen Zellen und einem zentral umgebenen antagonistischen Empfangsfeld von bipolaren Zellen. Auf dieser Grundlage wird die Merkmalsextraktion des Klassifikators unter Verwendung eines Faltungs-Neuronalen Netzwerks, eines Histogramms der Gradientenorientierung und eines lokalen Binärmusters durchgeführt, und der Klassifikator wird mithilfe einer Support-Vektor-Maschine trainiert. Diese Merkmale werden durch Kombination des Bewertungsvektors jedes Merkmals mit den erlernten Gewichten zusammengeführt. Bei der Erkennung werden durch die Kombination der Fahrzeugrücklichterkennung und Objektvorschläge genaue Interessenbereiche generiert. Experimentelle Ergebnisse zeigen, dass die vorgeschlagene bionische Bildverbesserungsmethode einen guten Einfluss auf die Fahrzeugerkennung hat. Unsere Methode zur Fahrzeugerkennung weist eine Erkennungsrate von 95,95 % mit 0,0575 Fehlalarmen pro Bild auf und übertrifft einige hochmoderne Techniken. Unsere vorgeschlagene Methode kann verschiedene Szenarien bewältigen, darunter Fahrzeuge unterschiedlicher Art und Größe, Fahrzeuge mit Verdeckungen und unscharfen Bereichen. Es kann auch Fahrzeuge an verschiedenen Standorten und mehrere Fahrzeuge erkennen.

 =============================================== ======================

Python implementiert den Bildweißabgleich

Neu gepostet von: https://www.cnblogs.com/hangy/p/12569157.html

import cv2
import numpy as np
 
def white_balance(img, mode=1):
    """白平衡处理(默认为1均值、2完美反射、3灰度世界、4基于图像分析的偏色检测及颜色校正、5动态阈值)"""
    # 读取图像
    b, g, r = cv2.split(img)
    # 均值变为三通道
    h, w, c = img.shape
    if mode == 1:
        # 默认均值  ---- 简单的求均值白平衡法
        b_avg, g_avg, r_avg = cv2.mean(b)[0], cv2.mean(g)[0], cv2.mean(r)[0]
        # 求各个通道所占增益
        k = (b_avg + g_avg + r_avg) / 3
        kb, kg, kr = k / b_avg, k / g_avg, k / r_avg
        b = cv2.addWeighted(src1=b, alpha=kb, src2=0, beta=0, gamma=0)
        g = cv2.addWeighted(src1=g, alpha=kg, src2=0, beta=0, gamma=0)
        r = cv2.addWeighted(src1=r, alpha=kr, src2=0, beta=0, gamma=0)
        output_img = cv2.merge([b, g, r])
    elif mode == 2:
        # 完美反射白平衡 ---- 依赖ratio值选取而且对亮度最大区域不是白色的图像效果不佳。
        output_img = img.copy()
        sum_ = np.double() + b + g + r
        hists, bins = np.histogram(sum_.flatten(), 766, [0, 766])
        Y = 765
        num, key = 0, 0
        ratio = 0.01
        while Y >= 0:
            num += hists[Y]
            if num > h * w * ratio / 100:
                key = Y
                break
            Y = Y - 1
 
        sumkey = np.where(sum_ >= key)
        sum_b, sum_g, sum_r = np.sum(b[sumkey]), np.sum(g[sumkey]), np.sum(r[sumkey])
        times = len(sumkey[0])
        avg_b, avg_g, avg_r = sum_b / times, sum_g / times, sum_r / times
 
        maxvalue = float(np.max(output_img))
        output_img[:, :, 0] = output_img[:, :, 0] * maxvalue / int(avg_b)
        output_img[:, :, 1] = output_img[:, :, 1] * maxvalue / int(avg_g)
        output_img[:, :, 2] = output_img[:, :, 2] * maxvalue / int(avg_r)
    elif mode == 3:
        # 灰度世界假设
        b_avg, g_avg, r_avg = cv2.mean(b)[0], cv2.mean(g)[0], cv2.mean(r)[0]
        # 需要调整的RGB分量的增益
        k = (b_avg + g_avg + r_avg) / 3
        kb, kg, kr = k / b_avg, k / g_avg, k / r_avg
        ba, ga, ra = b * kb, g * kg, r * kr
 
        output_img = cv2.merge([ba, ga, ra])
    elif mode == 4:
        # 基于图像分析的偏色检测及颜色校正
        I_b_2, I_r_2 = np.double(b) ** 2, np.double(r) ** 2
        sum_I_b_2, sum_I_r_2 = np.sum(I_b_2), np.sum(I_r_2)
        sum_I_b, sum_I_g, sum_I_r = np.sum(b), np.sum(g), np.sum(r)
        max_I_b, max_I_g, max_I_r = np.max(b), np.max(g), np.max(r)
        max_I_b_2, max_I_r_2 = np.max(I_b_2), np.max(I_r_2)
        [u_b, v_b] = np.matmul(np.linalg.inv([[sum_I_b_2, sum_I_b], [max_I_b_2, max_I_b]]), [sum_I_g, max_I_g])
        [u_r, v_r] = np.matmul(np.linalg.inv([[sum_I_r_2, sum_I_r], [max_I_r_2, max_I_r]]), [sum_I_g, max_I_g])
        b0 = np.uint8(u_b * (np.double(b) ** 2) + v_b * b)
        r0 = np.uint8(u_r * (np.double(r) ** 2) + v_r * r)
        output_img = cv2.merge([b0, g, r0])
    elif mode == 5:
        # 动态阈值算法 ---- 白点检测和白点调整
        # 只是白点检测不是与完美反射算法相同的认为最亮的点为白点,而是通过另外的规则确定
        def con_num(x):
            if x > 0:
                return 1
            if x < 0:
                return -1
            if x == 0:
                return 0
 
        yuv_img = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb)
        # YUV空间
        (y, u, v) = cv2.split(yuv_img)
        max_y = np.max(y.flatten())
        sum_u, sum_v = np.sum(u), np.sum(v)
        avl_u, avl_v = sum_u / (h * w), sum_v / (h * w)
        du, dv = np.sum(np.abs(u - avl_u)), np.sum(np.abs(v - avl_v))
        avl_du, avl_dv = du / (h * w), dv / (h * w)
        radio = 0.5  # 如果该值过大过小,色温向两极端发展
 
        valuekey = np.where((np.abs(u - (avl_u + avl_du * con_num(avl_u))) < radio * avl_du)
                            | (np.abs(v - (avl_v + avl_dv * con_num(avl_v))) < radio * avl_dv))
        num_y, yhistogram = np.zeros((h, w)), np.zeros(256)
        num_y[valuekey] = np.uint8(y[valuekey])
        yhistogram = np.bincount(np.uint8(num_y[valuekey].flatten()), minlength=256)
        ysum = len(valuekey[0])
        Y = 255
        num, key = 0, 0
        while Y >= 0:
            num += yhistogram[Y]
            if num > 0.1 * ysum:  # 取前10%的亮点为计算值,如果该值过大易过曝光,该值过小调整幅度小
                key = Y
                break
            Y = Y - 1
 
        sumkey = np.where(num_y > key)
        sum_b, sum_g, sum_r = np.sum(b[sumkey]), np.sum(g[sumkey]), np.sum(r[sumkey])
        num_rgb = len(sumkey[0])
 
        b0 = np.double(b) * int(max_y) / (sum_b / num_rgb)
        g0 = np.double(g) * int(max_y) / (sum_g / num_rgb)
        r0 = np.double(r) * int(max_y) / (sum_r / num_rgb)
 
        output_img = cv2.merge([b0, g0, r0])
    else:
        raise TypeError('mode should be in [1,2,3,4,5]. Got {}'.format(mode))
    output_img = np.uint8(np.clip(output_img, 0, 255))
    return output_img

 

おすすめ

転載: blog.csdn.net/Hoshea_sun/article/details/129356446