Размыта дымка? Улучшение изображения научит вас устранять дымку

искусственный интеллект

Аннотация: Алгоритм устранения дымки подробно представлен. Изображение после улучшения изображения также может использоваться в области обнаружения объектов, классификации изображений или обнаружения Интернета вещей, и эффект становится лучше.

Эта статья опубликована в сообществе Huawei Cloud Community "Подробное объяснение размытия изображения при предварительной обработке изображения.", по Истмаунт.

1. Обесцвечивание изображения

С развитием общества загрязнение окружающей среды постепенно увеличивалось, и все больше и больше городов имеют частую дымку, которая не только приносит вред здоровью людей, но и негативно влияет на те системы компьютерного зрения, которые полагаются на информацию об изображении. изображения, полученные в туманные дни, получаются низкими, а цвета склонны к смещению и искажению. Поэтому поиск простого и эффективного метода устранения дымки на изображении имеет решающее значение для последующих исследований компьютерного зрения.

Эта часть в основном содержит выдержки из следующих статей, посвященных популяризации алгоритма устранения дымки изображения, а также цитирует и ссылается на китайские статьи:

Улучшение изображения означает выделение полезной информации на изображении и удаление или ослабление бесполезной информации в соответствии с конкретными требованиями. Цель улучшения изображения — сделать обработанное изображение более подходящим для зрительных характеристик человеческого глаза или удобным для машинного распознавания. В области медицинской визуализации, визуализации с помощью дистанционного зондирования и фотографии человека технология улучшения изображения имеет широкий спектр применений. Улучшение изображения также можно использовать в качестве алгоритма предварительной обработки для алгоритмов обработки изображений, таких как распознавание целей, отслеживание целей, сопоставление характерных точек, слияние изображений и реконструкция сверхвысокого разрешения.

В последние годы появилось много алгоритмов устранения дымки одиночного изображения, и широко используемые из них включают:

  • Алгоритм устранения дымки выравнивания гистограммы
  • Алгоритм устранения дымки Retinex
  • Алгоритм предварительного удаления дымки темного канала
  • Алгоритм DehazeNet Dehaze на основе сверточной нейронной сети

В основном его можно разделить на три категории: алгоритм устранения дымки, основанный на улучшении изображения, алгоритм устранения дымки, основанный на восстановлении изображения, и алгоритм устранения дымки, основанный на CNN.

(1) Алгоритм устранения дымки на основе улучшения изображения

Технология улучшения изображения выделяет детали изображения, повышает контрастность и делает его более четким Этот тип алгоритма имеет широкое применение. Конкретные алгоритмы:

  • Алгоритм Ретинекс
    В соответствии с принципом формирования изображения устраняется влияние отражающей составляющей, и достигается эффект улучшения изображения и устранения мутности.
  • Алгоритм выравнивания гистограммы
    Делает распределение пикселей изображения более равномерным и увеличивает детали изображения.
  • Алгоритмы уравнения с частными производными
    Обработайте изображение как уравнение в частных производных и улучшите контраст, вычислив градиентные поля.
  • Алгоритм вейвлет-преобразования
    Разбейте изображение и увеличьте полезные части

Кроме того, на базе таких алгоритмов появилось множество усовершенствованных алгоритмов, основанных на принципе улучшения изображения.

(2) Алгоритм устранения дымки на основе восстановления изображения

В основном на основе модели физики атмосферного рассеяния путем наблюдения и суммирования большого количества туманных изображений и незатуманенных изображений в них существуют некоторые отношения отображения, а затем выполняются обратные операции в соответствии с процессом формирования туманных изображений для восстановления четких изображений. . Самый классический из них предложен Хэ Юмином:

  • Алгоритм предварительного удаления дымки темного канала
    Путем анализа признаков большого количества изображений без дымки обнаруживается априорная связь между изображениями без дымки и некоторыми параметрами в модели атмосферного рассеяния. Алгоритм имеет низкую сложность и хороший эффект устранения дымки, поэтому существует множество улучшенных алгоритмов, основанных на априорном использовании темного канала.

(3) Алгоритм удаления дымки на основе CNN

Используйте CNN для построения сквозной модели и восстановления изображений без тумана из изображений с туманом.В настоящее время существует две основные идеи использования нейронных сетей для алгоритмов удаления дымки:

  • Используйте CNN для создания некоторых параметров модели атмосферного рассеяния, а затем восстановите изображение без дымки на основе модели атмосферного рассеяния.
  • Создавайте четкие изображения без дымки непосредственно из размытых изображений с помощью CNN (например, GAN)

CNN применялся во многих областях из-за его мощной способности к обучению, поэтому существуют также алгоритмы, которые используют CNN для удаления дымки. В 2016 году CAI и др. впервые предложили сеть удаления дымки под названием DehazeNet для оценки пропускания туманных изображений. DehazeNet принимает размытое размытое изображение в качестве входных данных, выводит его коэффициент пропускания и восстанавливает четкое изображение без дымки на основе теории модели атмосферного рассеяния.

На следующем рисунке показан тест выравнивания гистограммы, предварительного устранения дымки в темном канале, алгоритмов удаления дымки DehazeNet и AOD-Net, а экспериментальные результаты показаны на рисунке. Из рисунка видно, что контрастность размытого изображения на основе алгоритма выравнивания гистограммы улучшения изображения явно повышена.Поскольку причины ухудшения качества не учитываются, шум также усиливается при увеличении контраста, что приводит к потерям деталей и отклонения цвета. Алгоритмы устранения дымки в темных каналах на основе физических моделей, алгоритмы DehazeNet и AOD-Net на основе нейронных сетей обеспечивают лучший эффект устранения дымки, чем алгоритмы выравнивания гистограммы.

Результаты сравнения других алгоритмов устранения дымки показаны на рисунке ниже, например, сравнение эффектов удаления дымки городов и дорог с изображениями и без них.

Наконец, как резюмировал Ван Даолэй, современные алгоритмы устранения дымки на туманных изображениях в основном основаны на трех направлениях: улучшение изображения, восстановление изображения и CNN.

  • Метод, основанный на улучшении изображения, не учитывает процесс формирования туманного изображения, а непосредственно выделяет детали изображения и улучшает контрастность, благодаря чему туманное изображение выглядит более четким.
  • Метод, основанный на восстановлении изображения, заключается в следовании физическому процессу деградации изображения и восстановлении четкого изображения с помощью физических моделей.
  • Метод на основе CNN использует мощную обучающую способность нейронной сети, чтобы найти взаимосвязь отображения между туманным изображением и некоторыми коэффициентами в физической модели восстановления изображения, или использует GAN для восстановления четкого изображения без тумана в соответствии с туманным изображением.

Вышеупомянутые три типа алгоритмов устранения дымки имеют очевидные эффекты устранения дымки для туманных изображений.Хотя они широко используются в реальной жизни, следующие моменты могут по-прежнему быть в центре внимания и трудностями будущих исследований в области устранения дымки на изображениях.

  • Более реалистичный набор данных туманных изображений
    Алгоритм, использующий нейронную сеть для удаления дымки, лучше, чем метод улучшения и восстановления изображения, но поскольку трудно захватить набор туманных изображений и изображений без тумана с одним и тем же фоном в природе, текущая обучающая нейронная сеть принимает метод Все наборы данных получены в результате синтеза, и хотя они могут в определенной степени соответствовать естественной среде, все же есть некоторые пробелы. Следовательно, существует острая необходимость в наборе данных, построенном из туманных изображений и изображений без дымки с тем же фоном, полученных в реальной среде, для повышения надежности и стабильности алгоритма устранения дымки нейронной сети.
  • Более простой алгоритм устранения дымки
    В настоящее время различные алгоритмы могут эффективно удалять мутность на одном изображении, но относительно хорошие алгоритмы имеют проблему высокой временной сложности, которую трудно применить к удалению мутности видео или сложным задачам с большим количеством требований.
  • Более надежный алгоритм устранения дымки
    Вышеупомянутые алгоритмы хорошо устраняют дымку только при однородной дымке, существующей на изображении, но плохо влияют на густой туман или неравномерно распределенный туман, поэтому поиск метода удаления дымки с более широким диапазоном применения является очень сложной задачей.

2. Алгоритм устранения дымки ACE

1. Принцип алгоритма

В этой части в основном представлены ссылки на книги автора и связанные с ними документы для повествования, а также кратко представлены основные сведения об алгоритме ACE. Если читатели хотят понять принцип в деталях, рекомендуется прочитать оригинальный английский текст, подробности см. в ссылках ниже, они все большие братья.
Цитирование и ссылки на китайские документы:

Английский оригинал:

Алгоритмы повышения контрастности изображения полезны во многих ситуациях, особенно в медицинских изображениях, поскольку визуальный осмотр медицинских изображений необходим при диагностике многих заболеваний. Алгоритм Retinex является репрезентативным алгоритмом улучшения изображения.Он формируется в соответствии с сетчаткой и корой головного мозга человека для имитации способности отражения света с длиной волны цвета объекта.Он имеет определенный диапазон динамического сжатия для одномерных штрих-кодов в сложных условиях, и оказывает сильное влияние на края изображения Некоторые адаптивные улучшения.

Автоматическое улучшение цвета (ACE)Алгоритм, предложенный Рицци в теории алгоритма Retinex, корректирует конечное значение пикселя, вычисляя яркость и соотношение между целевым пикселем изображения и окружающими пикселями, а также осуществляет настройку контрастности изображения. постоянство цвета и постоянство яркости имеет хороший эффект улучшения изображения.

Алгоритм ACE состоит из двух шагов:

  • Во-первых, настроить цвет и пространство изображения, завершить коррекцию хроматической аберрации изображения и получить пространственно реконструированное изображение.
    Он имитирует латеральное торможение и региональную адаптивность зрительной системы, а также выполняет пространственную настройку цвета. Боковое торможение является физиологическим понятием, означающим, что при стимуляции нейрона для генерации возбуждения соседние нейроны снова возбуждаются, причем возбуждение последних оказывает тормозящее действие на первые.
  • Второй — динамически расширять исправленное изображение.
    Внесите глобальные корректировки в динамический диапазон изображения и сделайте так, чтобы изображение удовлетворяло теории мира в градациях серого и допущениям о белых пятнах. Алгоритм нацелен на один канал, а затем расширяется на 3-канальное изображение в цветовом пространстве RGB, то есть три канала обрабатываются отдельно, а затем интегрируются.

(1) Региональная адаптивная фильтрация

Входное изображение I (в качестве примера изображение в градациях серого), этот шаг заключается в адаптивной фильтрации области всех точек p в одноканальном изображении I для получения промежуточного результирующего изображения после коррекции хроматической аберрации и пространственной реконструкции Формула расчета следующая :

В формуле: Ic§-Ic(j) — разница в оттенках серого между двумя пикселями p и j, выражающая латеральное торможение в псевдобиологии; d(p,j) — функция метрики расстояния, использующая разницу между двумя точками. Евклидово расстояние, действующее на вес влияния контрольной точки j на p, отображает региональную адаптируемость фильтрации; Sa(x) — это функция яркости (нечетная функция), а алгоритм в этой статье выбирает классическую функцию насыщения.

Выбор различных функций и параметров яркости контролирует степень повышения контрастности.Классическая функция насыщения имеет больший наклон перед насыщением, и результирующее повышение контрастности более очевидно.Как показано на рисунке 2, предельным случаем является форма функции знака, и функция Sign. Из-за неизбирательного чрезмерного усиления шум также плохо усиливается, и, наконец, функция Saturation выбирается в качестве функции производительности относительной яркости. Формула выглядит следующим образом:

(2) Повторное растяжение тона для динамического расширения изображения

Промежуточное растяжение, полученное по формуле (1), отображается в [0, 255], занимая динамический диапазон [0, 255] (8-битное изображение в градациях серого). Формула расчета следующая, где: [minR,maxR] вся область промежуточной величины L(x), благодаря которой изображение достигает глобального баланса белого.

На рисунке ниже показан эффект изображения штрих-кода после улучшения изображения ACE Изображение (b) после улучшения изображения имеет более сильный контраст, что улучшает яркость и темноту исходного изображения и сохраняет подлинность изображения при улучшении.

Английское введение алгоритма ACE выглядит следующим образом:

Эффект экспериментального сравнения показан на рисунке ниже При написании статьи на эту тему обратите внимание на сравнение с традиционным методом.

2. Реализация кода

Поскольку в OpenCV нет пакета алгоритмов ACE, следующий код основан на статье учителя «zmshy2128», а обработка выравнивания цветовой гистограммы изменена и реализована. Позже у автора будет возможность подробно проанализировать процесс реализации кода.

  • Быстрый алгоритм автоматического цветового выравнивания (ACE) - учитель zmshy2128

    -- coding: utf-8 --

    By:Eastmount CSDN 2021-03-12

    Убогая статья учителя zmshy2128, модифицированная в код Python3

    import cv2 import numpy as np import math import matplotlib.pyplot as plt

    #Линейная обработка растяжения # Удалить значение пикселя от максимального и минимального 0,5% линейно растянуть до [0,1] def stretchImage (данные, s = 0,005, ячейки = 2000):
    ht = np.histogram(data, bins); d = np.cumsum(ht[0])/float(data.size) lmin = 0; lmax=bins-1 while lmin<bins: if d[lmin]>=s: break lmin+=1 while lmax>=0: if d[lmax]<=1-s: break lmax-=1 return np.clip((data-ht[1][lmin])/(ht[1][lmax]-ht[1][lmin]), 0,1)

    #Рассчитать матрицу параметров веса по радиусу g_para = {} деф getPara (радиус = 5):
    global g_para m = g_para.get(radius, None) if m is not None: return m size = radius*2+1 m = np.zeros((size, size)) for h in range(-radius, radius+1): for w in range(-radius, radius+1): if h==0 and w==0: continue m[radius+h, radius+w] = 1.0/math.sqrt(h2+w2) m /= m.sum() g_para[radius] = m return m

    #Обычная реализация ACE def zmIce(I, отношение=4, радиус=300):
    para = getPara(radius) height,width = I.shape zh = [] zw = [] n = 0 while n < radius: zh.append(0) zw.append(0) n += 1 for n in range(height): zh.append(n) for n in range(width): zw.append(n) n = 0 while n < radius: zh.append(height-1) zw.append(width-1) n += 1 #print(zh) #print(zw)

    Z = I[np.ix_(zh, zw)]
    res = np.zeros(I.shape)
    for h in range(radius*2+1):
        for w in range(radius*2+1):
            if para[h][w] == 0:
                continue
            res += (para[h][w] * np.clip((I-Z[h:h+height, w:w+width])*ratio, -1, 1))
    return res
    

    #Реализация быстрого улучшения одноканального ACE def zmIceFast(I, соотношение, радиус): печать (я) высота, ширина = I.shape[:2] если мин (высота, ширина)

    return Rf+zmIce(I,ratio, radius)-zmIce(Rs,ratio,radius)   
    

    #rgb Три канала усиливаются по отдельности. ratio — коэффициент усиления контраста. radius — радиус шаблона свертки.
    def zmIceColor(I, ratio=4, radius=3):
    res = np.zeros(I.shape) for k in range(3): res[:,:,k] = stretchImage(zmIceFast(I[:,:,k], ratio, radius)) return res

    #основная функция еслиname == 'main': img = cv2.imread('car.png') res = zmIceColor(img/255.0)*255 cv2.imwrite('car-Ice.jpg', res)

Результаты работы показаны на рисунке Алгоритм ACE может эффективно устранять мутность изображения и улучшать детали изображения.

Последнее - это эффект обнаружения цели и удаления тумана, а также удаления тумана богини, ха-ха, продолжайте!

3. Алгоритм предварительного устранения дымки в темном канале

Этот алгоритм является классическим алгоритмом устранения дымки на изображениях, предложенным Хе Юмином в области компьютерного зрения в 2009 году и получившим в том же году лучшую статью в CVPR. Название статьи: «Удаление дымки одиночного изображения с использованием предварительного темного канала». Картинка ниже представляет собой энциклопедический профиль большого парня, который действительно силен и заслуживает изучения у всех нас.

  • В мае 2003 года Хэ Юймин получил квалификацию, которую рекомендовали в Университет Цинхуа, и был единственным учеником средней школы Чжисинь, которого рекомендовали в Университет Цинхуа.
  • В 2009 году Хэ Юймин стал первым китайским ученым, получившим награду «Лучшая статья» от CVPR, одной из трех крупных международных конференций в области компьютерного зрения.
  • В конкурсе по распознаванию изображений ImageNet 2015 года Хе Юймин и его команда использовали систему «Глубокое остаточное обучение распознавания изображений», чтобы победить Google, Intel, Qualcomm и другие отраслевые команды и занять первое место.
  • Хэ Юмин получил награду за лучшую статью CVPR 2009, CVPR 2016 и ICCV 2017 (приз Marr) как первый автор, а также получил награду за лучшую студенческую работу ICCV 2017.
  • В 2018 году в Солт-Лейк-Сити, США прошла 31-я конференция по компьютерному зрению и распознаванию образов (CVPR), на которой Хэ Юмин получил награду PAMI Young Scholar Award.

1. Принцип алгоритма

Ближе к дому, если вы являетесь автором в области обработки изображений или исследований по удалению дымки изображений, рекомендуется внимательно прочитать этот английский оригинальный текст, Это действительно удивительно, что вы можете предложить этот алгоритм в 2009 году.

Цитирование и ссылки на китайские документы:

Английский оригинал:

Алгоритм удаления дымки Dark Channel Prior (DCP)Опираясь на модель атмосферного рассеяния для обработки удаления дымки, путем наблюдения и суммирования большого количества туманных изображений и незатуманенных изображений, в них существуют некоторые картографические отношения, а затем выполняются обратные операции по процессу формирования туманных изображений для восстановления четкости. картинки.

Процесс и принцип реализации алгоритма следующие, см. работы учителей Хэ Юмина и Хэ Тао.

(1) Модель атмосферного рассеяния

В компьютерном зрении и компьютерной графике широко используются модели атмосферного рассеяния, описываемые уравнениями. Параметры объясняются следующим образом:

  • x - пространственная координата изображения
  • I(x) представляет затуманенное изображение (изображение, которое нужно удалить)
  • J(x) представляет изображение без тумана (изображение, которое нужно восстановить)
  • A обозначает глобальное значение атмосферного освещения.
  • t(x) представляет коэффициент пропускания

Первый член в правой части уравнения представляет собой коэффициент прямого затухания сцены, а второй член представляет собой компонент окружающего света.

(2) Определение темного канала

В большинстве локальных областей, не относящихся к небу, некоторые пиксели всегда будут иметь низкие значения хотя бы для одного цветового канала. Для изображения J(x) математическое определение его темного канала выражается следующим образом:

Среди них Ω(x) представляет локальную область с центром в x, а верхний индекс c представляет три канала RGB. Смысл этой формулы также очень просто выразить в коде: сначала найти минимальное значение компонентов RGB каждого пикселя, сохранить его в изображении в градациях серого того же размера, что и исходное изображение, а затем выполнить минимальное значение на это изображение в градациях серого.Фильтр, радиус фильтра определяется размером окна.

(3) Предыдущая теория темного канала

Априорная теория темного канала указывает, что темный канал свободного от дымки изображения J(x) в области, отличной от неба, стремится к 0, а именно:

Есть три основных фактора, которые вызывают низкие и средние значения канала темных основных цветов в реальной жизни:

  • а) тени от стеклянных окон автомобилей, зданий и городов или тени от природных объектов, таких как листья, деревья и скалы;
  • б) Ярко окрашенные объекты или поверхности с низкими значениями в некоторых из трех каналов RGB (например, зеленая трава/деревья/растения, красные или желтые цветы/листья или голубые водные поверхности);
  • в) Предметы или поверхности более темного цвета, такие как темные стволы деревьев и камни.

Короче говоря, естественные сцены полны теней или цветов, и темные основные цвета изображений этих сцен всегда очень темные, а туманные изображения более яркие. Таким образом, ясно видна общность априорной теории темного канала.

(4) Деформация формулы

Согласно модели атмосферного рассеяния первая формула немного переработана и преобразована в следующую формулу:

Предполагая, что коэффициент пропускания t(x) каждого окна является константой, обозначаемой как t'(x), и задано значение A, выполняя одновременно две минимальные операции с обеих сторон формулы, мы можем получить :

Среди них J(x) является требуемым изображением без дымки в соответствии с вышеупомянутой априорной теорией темного канала:

Таким образом, можно вывести:

(5) Расчет передачи

Вставив приведенную выше формулу в оценочное значение коэффициента пропускания t'(x), можно получить следующее:

В реальной жизни, даже если небо ясное, в воздухе будут какие-то частицы, и люди все еще могут чувствовать существование тумана, глядя на отдаленные пейзажи. Кроме того, наличие тумана заставляет людей чувствовать глубину резкости, поэтому необходимо сохранять определенную степень тумана при удалении тумана. Расчетный коэффициент пропускания можно изменить, введя коэффициент w от 0 до 1 (обычно 0,95), как показано в формуле:

Приведенный выше процесс вывода предполагает, что известно значение атмосферного освещения A. На практике его можно получить из исходной карты тумана с помощью карты темного канала. Конкретные шаги заключаются в следующем:

  • Сначала получите карту темного канала и извлеките самые яркие верхние 0,1% пикселей в соответствии с яркостью карты темного канала.
  • Найдите значение точки с наибольшей яркостью в соответствующей позиции на исходной карте тумана I(x) как значение атмосферного освещения A

Кроме того, поскольку коэффициент пропускания t слишком мал, J будет слишком большим, а восстановленное немутное изображение будет избыточным по отношению к точке белого, поэтому необходимо установить нижний предел t0 (обычно 0,1) для Коэффициент пропускания Когда значение t меньше, чем Когда t0, примите t=t0. Подставляем значения коэффициента пропускания и атмосферного света, полученные выше, в формулу, и окончательно получаем формулу восстановления изображения следующим образом:

Это принципиальный процесс алгоритма предварительного удаления дымки темного канала.Нижеследующее является простым дополнением к обработке визуализаций в статье.

В очередной раз поклоняясь идолам, очень рекомендую всем прочесть газету.

2. Реализация алгоритма

Код реализации, процитированный г-ном Му, кажется лучше, чем я написал.Ссылка выглядит следующим образом:

  • openCV + python реализует устранение дымки на изображениях — требуется программист

    -- coding: utf-8 --

    """ Created on Sat Sep 11 00:16:07 2021 @author: xiuzhang

    Использованная литература:blog.CSDN.net/Levi op cool/AR… """

    import sys import cv2 import math import numpy as np

    def DarkChannel(im,sz): b,g,r = cv2.split(im) dc = cv2.min(cv2.min(r,g),b) kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(sz,sz)) dark = cv2.erode(dc,kernel) return dark

    def AtmLight(im,dark): [h,w] = im.shape[:2] imsz = h*w numpx = int(max(math.floor(imsz/1000),1)) darkvec = dark.reshape(imsz,1) imvec = im.reshape(imsz,3)

    indices = darkvec.argsort()
    indices = indices[imsz-numpx::]
    
    atmsum = np.zeros([1,3])
    for ind in range(1,numpx):
       atmsum = atmsum + imvec[indices[ind]]
    
    A = atmsum / numpx;
    return A
    

    def TransmissionEstimate(im,A,sz): omega = 0.95 im3 = np.empty(im.shape,im.dtype)

    for ind in range(0,3):
        im3[:,:,ind] = im[:,:,ind]/A[0,ind]
    
    transmission = 1 - omega*DarkChannel(im3,sz)
    return transmission
    

    def Guidedfilter(im,p,r,eps): mean_I = cv2.boxFilter(im,cv2.CV_64F,(r,r)) mean_p = cv2.boxFilter(p, cv2.CV_64F,(r,r)) mean_Ip = cv2.boxFilter(imp,cv2.CV_64F,(r,r)) cov_Ip = mean_Ip - mean_Imean_p

    mean_II = cv2.boxFilter(im*im,cv2.CV_64F,(r,r))
    var_I   = mean_II - mean_I*mean_I
    
    a = cov_Ip/(var_I + eps)
    b = mean_p - a*mean_I
    
    mean_a = cv2.boxFilter(a,cv2.CV_64F,(r,r))
    mean_b = cv2.boxFilter(b,cv2.CV_64F,(r,r))
    
    q = mean_a*im + mean_b
    return q
    

    def TransmissionRefine(im,et): gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY) gray = np.float64(gray)/255 r = 60 eps = 0.0001 t = Guidedfilter(gray,et,r,eps)

    return t
    

    def Recover(im,t,A,tx = 0.1): res = np.empty(im.shape,im.dtype) t = cv2.max(t,tx)

    for ind in range(0,3):
        res[:,:,ind] = (im[:,:,ind]-A[0,ind])/t + A[0,ind]
    
    return res
    

    if name == 'main':

    fn = 'car-02.png'
    src = cv2.imread(fn)
    I = src.astype('float64')/255
    
    dark = DarkChannel(I,15)
    A = AtmLight(I,dark)
    te = TransmissionEstimate(I,A,15)
    t = TransmissionRefine(src,te)
    J = Recover(I,t,A,0.1)
    
    arr = np.hstack((I, J))
    cv2.imshow("contrast", arr)
    cv2.imwrite("car-02-dehaze.png", J*255 )
    cv2.imwrite("car-02-contrast.png", arr*255)
    cv2.waitKey();
    

Эффект реализации показан на следующем рисунке:

Если вы хотите совместить с последующим обнаружением целевого автомобиля, вы также можете сначала удалить туман, а затем выполнить обнаружение, как показано на следующем рисунке:

4. Шум изображения и генерация тумана

Добавление или генерация шума всегда необходимы при обработке изображений.Вот два простых кода, сгенерированные шумом соли и перца и симуляцией тумана. Это тесно связано с экспериментами в этой статье и может предоставить нам больше образцов для генерации GAN. В следующей серии статей об искусственном интеллекте, GAN, давайте посмотрим, сможем ли мы узнать изображения реальных сцен запотевания, это стоит ждать с нетерпением, ха-ха!

1. Солевой шум

Исходное изображение представляет собой пейзажное изображение:

код показывает, как показано ниже:

# -*- coding:utf-8 -*-
import cv2
import numpy as np

#读取图片
img = cv2.imread("fj.png", cv2.IMREAD_UNCHANGED)
rows, cols, chn = img.shape

#加噪声
for i in range(50000):    
    x = np.random.randint(0, rows) 
    y = np.random.randint(0, cols)    
    img[x,y,:] = 210

cv2.imshow("noise", img)
           
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imwrite('fj-res.png',img)

Результат вывода показан на следующем рисунке:

2. Моделирование генерации тумана

код показывает, как показано ниже:

import numpy as np
import cv2 as cv
import os
import random
 
file = ['fj.png']
output = 'fj-wu.png'

for file_img in file:
    #打开图像
    img = cv.imread(file_img)
    mask_img = cv.imread(file_img)
    
    #雾的颜色
    mask_img[:, :] = (166, 178, 180) 
    
    #里面参数可调,主要调整雾的浓度
    image = cv.addWeighted(img,
                           round(random.uniform(0.03, 0.28), 2),
                           mask_img, 1, 0) 

    #保存的文件夹
    cv.imwrite(output, image)

Результат на выходе показан на рисунке ниже, и эффект неплохой.

Нажмите «Подписаться», чтобы впервые узнать о новых технологиях HUAWEI CLOUD~