1

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

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

Я хочу уменьшить шум (черные пробелы) до 0 на шкале RBG и улучшить зеленые пространства. Я изначально писал цикл for в OpenCV с пороговыми ограничениями для изменения каждого пикселя, но я знаю, что есть лучший способ.

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

Original Image и enhanced Image.

Мне нужно научиться делать это в среде python, чтобы я мог автоматизировать этот процесс. Как я уже сказал, я новичок, но я знаком с OpenCV от python, mahotas, numpy и т. Д., Поэтому я не совсем привязан к определенному пакету. Я также очень новичок в этих методах, поэтому я открыт, даже если вы просто укажете мне в правильном направлении.

Спасибо!

ответ

0

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

th = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, 3, 2) enter image description here

Затем я применил медианный фильтр:

median = cv2.medianBlur(th, 5) enter image description here

Наконец я применил морфо логическое закрытие с ядром эллипса:

k1 = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5)) 
dilate = cv2.morphologyEx(median, cv2.MORPH_CLOSE, k1, 3) 

THIS PAGE поможет изменить этот результат, как вы.

+0

Привет, Jeru, я получаю сообщение об адаптивном пороге. Это говорит в () ----> 1-й = cv2.adaptiveThreshold (IMG, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, 3, 2) ошибка:/feedstock_root /build_artefacts/work/opencv-3.1.0/modules/imgproc/src/thresh.cpp:1286: ошибка: (-215) src.type() == CV_8UC1 в функции adaptiveThreshold – Bryce

+0

Привет, Jeru, спасибо за потрясающий пост ! Это в ответ на мой предыдущий комментарий выше. Я хочу добавить для тех, кто пытается следовать этому, что мне нужно было включить следующий код на изображение 'img = img.max (axis = 2)', чтобы выполнить пороговое значение. – Bryce

+0

@Bryce Да, это правильно, потому что адаптивный порог работает только для изображений с серой шкалой: D –

2

Вы можете взглянуть на histogram equalization. Это подчеркивало бы зеленый цвет и уменьшало бы черный диапазон. Существует учебник OpenCV here. Впоследствии вы можете поэкспериментировать с различными thresholding mechanisms, которые наилучшим образом дают бактерии.

+0

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

1

Использование TensorFlow:

  1. создать свой собственный набор данных с изображениями бактерий и их позиций, хранящихся в сопроводительных текстовых файлов (чем больше набор данных, тем лучше).
  2. Создать положительный и отрицательный набор изображений
  3. обновления по умолчанию TensorFlow примера с изображениями
  4. убедитесь, что у вас есть куча сверточных слоев.
  5. поезда и испытания.

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

 Смежные вопросы

  • Нет связанных вопросов^_^