Зачем сосед льет масло в пороги автомобиля — эксперт все объяснил — журнал За рулем
Говорят, что можно легко предотвратить ржавчину в порогах с помощью слитого, уже использованного моторного масла. Есть и рекомендация, как проще это масло в пороги залить, чтобы не испачкаться.
Зачем водители держат в бардачке парафиновые свечи? Проверили лайфхак
Отжившее свое моторное масло — давний и популярный способ сохранения автомобильных порогов от ржавчины, уверяют в интернете. Им пользовались еще наши дедушки. Основная сложность в том, как эту самую отработку залить в пороги. Мы наткнулись на необычный способ: выход нашли… в краскопульте!
В интернете советуют найти использованный флакон от современных эмалей и лаков, который подходит к резьбе краскопульта. В любом малярном цеху таких в избытке.
Залить отработку во флакон, присоединить к «пистолету» и заполнить порог через сливные отверстия, которые откроются при снятии пластиковых накладок в дверной нише. Потом нужно поставить накладки на место и немного поездить на машине, чтобы масло равномерным слоем распределилось по нишам полости. Со временем отработка загустеет и превратится в плотную пленку, которая надолго сохранит металл от ржавчины. Такой процедуры хватает лет на семь-десять.
Мнение эксперта
Комментирует эксперт «За рулем» Алексей Ревин:
Отработанное моторное масло — оно и есть отработанное. Его щелочное число, определяющее антикоррозионные свойства, уже стало заметно меньше. Оно не способно вытеснить влагу, если она оказалась где-то в щели в нижней части порогов. Ведь вода имеет большую плотность, а налитое сверху масло не даст воде высохнуть. Тем не менее масло ликвидирует доступ окислителя – кислорода, а потому коррозия будет замедлена. Запах после обработки сильным не будет, а вот капать масло на дорогу через малейшие щели может очень долго, пока не закончится, ведь оно не высыхает. Капли будут пачкать пол гаража и попадут на шины.
За ними заржавеет. Топ-5 быстро гниющих автоГораздо лучше работают специальные антикоррозионные составы, применять которые начали в скандинавских странах еще в начале второй половины прошлого века. Конкретно в пороги, хотя это далеко не все места автомобиля, которые следует защищать от коррозии, состав можно подать двумя способами. Первый – самостоятельно, приобретя аэрозольный баллончик с длинной трубочкой для распыления состава. Ну а второй и самый правильный — это провести комплексную антикоррозионную обработку автомобиля, при которой препараты двух типов профессионалы нанесут в скрытые полости автомобиля (включая пороги) и на его днище. Особенность препаратов для скрытых полостей в том, что они немного подсыхают, оставляя прочную и эластичную пленку.
Рыжая смерть: 4 важных вопроса (и ответа) про коррозию
Что касается описанного способа нанесения, то он вызывает много вопросов. Если у человека есть краскопульт, то значит есть и система снабжения сжатым воздухом. Тогда лучше использовать специальное устройство для нанесения антикора, приобрести антикоррозионный препарат и «задуть» его в пороги. Вот это даст результат, близкий к профессиональной обработке.
***
Наш вердикт: советом воспользоваться можно, но зачем? Лучше подобрать более эффективный способ решения проблемы.
- Между прочим, ржавчина может служить и элементом декора. Есть компании, которые на этом специализируются.
- Уберечь пороги от внешнего механического воздействия и одновременно придать автомобилю индивидуальность помогут алюминиевые пороги-площадки турецкой компании Can Otomotiv.
- Не хватает места в салоне авто? Приезжайте в наш магазин — подберем недорогой багажник на крышу, посоветуем автобокс!
- «За рулем» теперь можно читать в Facebook.
Фото: Depositphotos и «За рулем»
Понравилась заметка? Подпишись и будешь всегда в курсе!
За рулем в Дзен
Пушсало в пороги
Многие автомобилисты считают, что коррозии подвержена только внешняя часть кузова, поэтому пороги обрабатывают только снаружи – например, антигравийным покрытием.
Однако в реальности эти части автомобиля ржавеют, в основном, изнутри. Поэтому и защищать их нужно не только с внешней стороны.
Разберемся, какими методами лучше бороться с коррозией и разрушением порогов, эффективно ли использование пушсала в этих целях. Подробнее рассмотрим особенности этого смазочного материала, его преимущества и недостатки.
Как уже было указано во вступлении, наружная обработка порогов не так важна, как внутренняя, однако именно внешняя часть определяет эстетическую привлекательность автомобиля.
Чтобы улучшить вид своего транспортного средства, некоторые автомобилисты устанавливают на пороги пластиковые обвесы. Они скрывают следы коррозии и сколы. При этом немногие знают, что нестандартные молдинги могут навредить порогам даже больше, чем отсутствие краски и ржавчина.
Дело в том, что под накладки неизбежно набивается пыль. Она смешивается с водой и образует крупные комки, которые царапают и сдирают краску при движении по неровностям. В результате пороги «гниют» не только изнутри, но и снаружи.
Поврежденное лакокрасочное покрытие на кузове автомобиля следует вовремя восстанавливать, так как именно в местах сколов металл оказывается не защищенным. Решить проблему его коррозии будет намного сложнее.
Пороги ближе, чем другие элементы кузова, расположены к дорожному покрытию. Именно поэтому они наиболее сильно подвержены различным механическим воздействиям и повреждениям.
Во избежание поломок их необходимо регулярно подкрашивать и подваривать (если ржавчина уже разъела детали), а для профилактики обрабатывать специальными покрытиями или жирными смазками (типа пушсала).
Еще один способ продлить срок службы порогов – установить на передние колеса брызговики.
Остановимся на разных методах защиты подробнее.
Перед покраской пороги следует тщательно подготовить – иначе покрытие на них долго не продержится.
Для проведения всех манипуляций вам потребуется:
- Болгарка с насадкой-«ершиком»
- Наждачная бумага
- Растворитель
- Грунтовка
- Покрасочный пистолет
- Краска
- Укрывная пленка и малярный скотч
Осмотрите автомобиль и оцените состояние порогов. Если ржавчина сильно повредила их, то без сварки не обойтись. После подваривания дыр их нужно зашпаклевать.
Перед покраской заклейте низы дверей малярным скотчем и обработайте пороги болгаркой.
Затем обезжирьте металл растворителем и загрунтуйте. Затрите поверхности наждачной бумагой.
Замените запылившийся малярный скотч новым и приступайте к покраске. После завершения работы хорошо высушите пороги.
Для профилактики коррозии порогов многие водители используют жирные густые смазки.
Как правило, это дешевые составы, разработанные еще в советское время или намного раньше. Наибольшей популярностью пользуется пушсало (пушечное сало).Еще 200 лет назад эту смазку применяли для консервации орудий и снарядов.
Пушсало представляет собой нефтяное масло, загущенное петролатумом и церезином. Состав ограничивает доступ кислорода к обработанной поверхности и отлично отталкивает воду.
При нормальной температуре пушсало имеет очень густую консистенцию (схожую с парафином), поэтому перед нанесением смазку разогревают до +90 °С. Некоторые советуют смешивать пушсало с отработкой или трансмиссионным маслом – в более жидком виде состав лучше проникает в труднодоступные места.
Подготовленную смазку можно наносить из шприца. Только будьте осторожны, чтобы не обжечься горячей жидкостью. Обязательно используйте перчатки и защитные очки.
Для скрытых полостей удобнее использовать мовильницу – специализированный пневматический распылитель с нижним расположением бачка.
При работе учтите несколько важных моментов.
1. Пушсало очень быстро застывает, поэтому перед тем как начать его наносить, подготовьте все необходимое.
2. Чтобы как можно более качественно обработать пороги, предварительно промойте и высушите все поверхности, включая скрытые полости; очаги ржавчины удалите механическим путем (например, наждачкой)
3. Не нагревайте состав быстро. Для постепенного расплавления пушсала используйте электроплитку или специальную газовую горелку.
Автовладельцы, использующие пушсало для защиты порогов от ржавчины, отмечают следующие преимущества этого материала:
- Высокая адгезия
- Отличные водоотталкивающие свойства
- Универсальность (подходит как черных, так и для цветных металлов)
- Сохранение свойств при низких (-50 °С) и высоких температурах (+50 °C)
- Демократичную цену
Главный недостаток пушечного сала (если его можно так назвать) – это эффективность только на новых или свежеотремонтированных машинах, в закрытых полостях которых нет коррозии. Если она уже присутствует, то никакая смазка не поможет.
Мало того, забитые застывшим антикором пороги перестают нормально вентилироваться и просушиваться. Тем самым создаются особенно благоприятные условия для распространения ржавчины. Именно поэтому так важно не количество, а качество препарата и его распыления.
Брызговики на передние колеса устанавливают для того, чтобы снизить абразивное воздействие дорожной грязи на пороги и арки, а также уменьшить количество попадающей воды.
Если автомобиль оборудован брызговиками, краска на нижней части кузова продержится на несколько лет дольше.
Была ли полезна статья?
Рейтинг: 0 ( оценок)
Пороговое значение— обработка изображений с помощью Python
Обзор
Обучение: 60 мин.
Упражнения: 50 минВопросы
Цели
Объясните, что такое пороговое значение и как его можно использовать.
Используйте гистограммы, чтобы определить соответствующие пороговые значения для использования в процессе пороговой обработки.
Применение к изображению простого двоичного порога с фиксированным уровнем.
Объясните разницу между использованием оператора
>
или оператора<
для порогового значения изображения, представленного массивом numpy.Опишите форму бинарного изображения, полученного путем пороговой обработки с помощью
>
или<
.Объясните, когда подходит метод Оцу для автоматического определения порога.
Применить автоматическое пороговое значение к изображению с помощью метода Оцу.
Используйте функцию
np.count_nonzero()
для подсчета количества ненулевых пикселей в изображении.
В этом эпизоде мы узнаем, как использовать функции skimage для применения пороговое значение изображения. Пороговое значение является типом сегментации изображения , где мы изменяем пиксели изображения, чтобы упростить анализ изображения. При пороговой обработке мы преобразуем изображение из цветного или в оттенках серого в бинарное изображение , то есть просто черно-белое. Чаще всего, мы используем пороговое значение как способ выбора областей интереса изображения, игнорируя части, которые нас не интересуют. Мы уже сделали несколько простых пороговых значений, в разделе «Управление пикселями» Представление изображения в эпизоде skimage . В этом случае мы использовали простую манипуляцию с массивом NumPy для отделить пиксели, принадлежащие корневой системе растения, от черного фона. В этом эпизоде мы узнаем, как использовать функции skimage для определения порога. Затем мы будем использовать маски, возвращаемые этими функциями, для выделяем интересующие нас части изображения.
Простое пороговое значение
Рассмотрим изображение data/shapes-01.jpg
с серией
грубо вырезанные фигуры на белом фоне.
импортировать numpy как np импортировать глобус импортировать matplotlib.pyplot как plt импортировать imageio.v3 как iio импортировать skimage.color импортировать skimage.filters виджет %matplotlib # загрузить изображение изображение = iio.imread(uri="data/shapes-01.jpg") рис, топор = plt.subplots() plt.imshow(изображение)
Теперь предположим, что мы хотим выбрать только фигуры с изображения.
Другими словами, мы хотим оставить пиксели, принадлежащие фигурам, «включенными».
при отключении остальных пикселей,
установив их значения цветового канала в нули.
Библиотека skimage имеет несколько различных методов пороговой обработки. Начнем с самого простого варианта,
который включает в себя важный шаг человеческого вклада.
В частности, в этом простом, пороговое значение с фиксированным уровнем ,
мы должны указать пороговое значение t
.
Процесс работает следующим образом. Сначала мы загрузим исходное изображение, преобразуем его в оттенки серого, и уберите шум, как в эпизоде Blurring Images .
# преобразовать изображение в оттенки серого gray_image = skimage.color.rgb2gray(изображение) # размыть изображение, чтобы убрать шум blurred_image = skimage.filters.gaussian (grey_image, sigma = 1,0) рис, топор = plt.subplots() plt.imshow (размытое_изображение, cmap = "серый")
Далее мы хотели бы применить порог t
так, чтобы
пиксели со значениями оттенков серого с одной стороны от до
будут включены,
в то время как пиксели со значениями оттенков серого на другой стороне будут отключены.
Как мы можем это сделать?
Помните, что изображения в градациях серого содержат значения пикселей в диапазоне от 0 до 1,
поэтому ищем порог t
в закрытом диапазоне [0. 0, 1.0].
Мы видим на изображении, что геометрические фигуры «темнее», чем
фон белый, но есть и светло-серый шум на фоне.
Один из способов определить «хорошее» значение для т
есть
посмотреть на гистограмму изображения в градациях серого
и попытайтесь определить, какие диапазоны оттенков серого соответствуют формам на изображении.
или фон.
Гистограмму для показанного выше изображения формы можно создать, как показано в эпизод Создание гистограмм .
# создать гистограмму размытого изображения в градациях серого гистограмма, bin_edges = np.histogram (blurred_image, интервалы = 256, диапазон = (0,0, 1,0)) рис, топор = plt.subplots() plt.plot(bin_edges[0:-1], гистограмма) plt.title("Гистограмма оттенков серого") plt.xlabel("значение в оттенках серого") plt.ylabel("пиксели") plt.xlim(0, 1.0)
Так как изображение имеет белый фон,
большинство пикселей изображения белые.
Это хорошо соответствует тому, что мы видим на гистограмме:
есть пик около значения 1,0. Если мы хотим выбрать фигуры, а не фон,
мы хотим отключить белые фоновые пиксели,
оставив пиксели для фигур включенными.
Итак, мы должны выбрать значение t
где-то перед большим пиком и
выключите пиксели выше этого значения.
Выберем t=0,8
.
Для применения порога t
,
мы можем использовать операторы сравнения numpy для создания маски.
Здесь мы хотим включить все пиксели, значения которых меньше порогового значения.
поэтому мы используем оператор less <
для сравнения blurred_image
с порогом t
.
Оператор возвращает маску, которую мы фиксируем в переменной binary_mask
.
Он имеет только один канал, и каждое из его значений равно 0 или 1.
Двоичная маска, созданная операцией пороговой обработки, может быть показана с помощью plt.imshow
,
где записи False
отображаются как черные пиксели
(со значением 0) и записи True
отображаются белыми пикселями. (1-значный).
# создать маску на основе порога т = 0,8 двоичная_маска = размытое_изображение < t рис, топор = plt.subplots() plt.imshow (бинарная_маска, cmap = "серый")
Вы можете видеть, что области, где фигуры были в исходной области, теперь белые, в то время как остальная часть изображения маски черная.
Что делает порог хорошим?
Как это часто бывает, ответ на этот вопрос — «это зависит». В приведенном выше примере мы могли бы просто отключить все белые фоновые пиксели, выбрав
t=1.0
, но это оставило бы нас с некоторым фоновым шумом в изображении маски. С другой стороны, если мы выберем слишком низкое значение порога, мы можем потерять некоторые фигуры, которые слишком яркие. Вы можете поэкспериментировать с порогом, повторно запустив приведенные выше строки кода с разные значения длят
. На практике это вопрос знания предметной области и опыт интерпретации пиков на гистограмме, чтобы определить соответствующий порог. Процесс часто включает в себя пробы и ошибки, что является недостатком простого порогового метода. Ниже мы представим автоматическое пороговое значение, который использует количественное, математическое определение для хорошего порога, который позволяет определить значениеt
автоматически. Стоит отметить, что принцип простой и автоматической пороговой также может использоваться для изображений с диапазоном пикселей, отличным от [0,0, 1,0]. Например, мы могли бы выполнить пороговое значение для значений интенсивности пикселей. в диапазоне [0, 255], как мы уже видели в Представление изображения в эпизоде skimage .
Теперь мы можем применить binary_mask
к исходному цветному изображению.
узнали в эпизоде Рисование и побитовые операции .
У нас остались только цветные фигуры из оригинала.
# используйте бинарную_маску, чтобы выбрать «интересную» часть изображения выбор = изображение.копировать() выбор[~бинарная_маска] = 0 рис, топор = plt. subplots() plt.imshow (выбор)
Больше практики с простым пороговым значением (15 мин)
Теперь твоя очередь тренироваться. Предположим, мы хотим использовать простую пороговую обработку выбрать только цветные фигуры (в данном случае сероватый тоже считается цветом) из изображения
data/shapes-02.jpg
:Сначала постройте гистограмму в градациях серого, как в Эпизод гистограммы и изучить распределение значений оттенков серого на изображении. Что вы считаете, что это хорошее значение для порога
т
?Решение
Гистограмма для изображения
data/shapes-02.jpg
может быть показана с помощьюgray_image = iio.imread(uri="data/shapes-02.jpg", mode="L") гистограмма, bin_edges = np.histogram (gray_image, ячейки = 256, диапазон = (0,0, 1,0)) рис, топор = plt.subplots() plt.plot(bin_edges[0:-1], гистограмма) plt.title("Гистограмма уровней серого") plt. xlabel("серое значение") plt.ylabel("количество пикселей") plt.xlim(0, 1.0)Мы видим большой всплеск около 0,3 и меньший всплеск около 0,7. пик около 0,3 представляет более темный фон, поэтому кажется, что значение близко к
t=0,5
будет хорошим выбором.Затем создайте маску, чтобы включить пиксели выше порога
t
. и пикселей ниже порогат
выкл. Обратите внимание, что в отличие от изображения с белым фоном, который мы использовали выше, здесь пик для цвет фона находится на более низком уровне серого, чем формы. Поэтому измените оператор сравнения меньше<
на больше>
, чтобы создать соответствующую маску. Затем нанесите маску на изображение и просмотреть пороговое изображение. Если все работает как надо должен, ваш вывод должен отображать только цветные фигуры на черном фон.Решение
Вот команды для создания и просмотра бинарной маски
т = 0,5 двоичная_маска = серое_изображение> t рис, топор = plt. subplots() plt.imshow (бинарная_маска, cmap = "серый")А вот команды для применения маски и просмотра порогового изображения
изображение = iio.imread(uri="data/shapes-02.jpg") выбор = изображение.копировать() выбор[~бинарная_маска] = 0 рис, топор = plt.subplots() plt.imshow (выбор)
Автоматическое определение порога
Недостаток простой техники пороговой обработки заключается в том, что мы должны
сделать обоснованное предположение о пороге t
, изучив гистограмму.
Есть также автоматических пороговых методов , которые могут определить
порог автоматически для нас.
Одним из таких методов является метод Оцу .
Это особенно полезно в ситуациях, когда гистограмма в градациях серого изображения
имеет два пика, которые соответствуют фону и интересующим объектам.
Шумоподавление изображения перед пороговым значением
На практике часто бывает необходимо очистить изображение от шума перед пороговое значение, которое может быть выполнено одним из методов из эпизод Размытые изображения .
Рассмотрим изображение data/maize-root-cluster.jpg
корневой системы кукурузы, которая
мы видели раньше в
Представление изображения в эпизоде skimage .
изображение = iio.imread(uri="data/maize-root-cluster.jpg") рис, топор = plt.subplots() plt.imshow(изображение)
Мы используем размытие по Гауссу с сигмой 1,0 для устранения шума корневого изображения. Давайте посмотрим на гистограмму в градациях серого изображения без шума.
# преобразовать изображение в оттенки серого gray_image = skimage.color.rgb2gray(изображение) # размыть изображение, чтобы убрать шум blurred_image = skimage.filters.gaussian (grey_image, sigma = 1,0) # показать гистограмму размытого изображения гистограмма, bin_edges = np.histogram (blurred_image, интервалы = 256, диапазон = (0,0, 1,0)) рис, топор = plt.subplots() plt.plot(bin_edges[0:-1], гистограмма) plt.title("Гистограмма уровней серого") plt.xlabel("серое значение") plt. ylabel("количество пикселей") plt.xlim(0, 1.0)
Гистограмма имеет значительный пик около 0,2, а второй, меньший пик очень близок к 1,0. Таким образом, это изображение является хорошим кандидатом для пороговой обработки методом Оцу. Математические детали того, как это работает, сложны (см. документация по скимейджу если ты заинтересован), но в результате метод Оцу находит пороговое значение между два пика гистограммы в градациях серого.
Функция skimage.filters.threshold_otsu()
может использоваться для определения
порог автоматически с помощью метода Оцу.
Затем можно использовать операторы сравнения numpy, чтобы применить его, как и раньше.
Вот команды Python для определения порога t
методом Оцу.
# выполнить автоматическое пороговое значение t = skimage.filters.threshold_otsu (размытое_изображение) print("Найден автоматический порог t = {}.".format(t))
Найден автоматический порог t = 0,4172454549881862.
Для этого корневого изображения и размытия по Гауссу с выбранным сигмой 1,0,
расчетное пороговое значение равно 0,42.
Нет, мы можем создать бинарную маску с оператором сравнения >
.
Как мы видели ранее, пиксели выше порогового значения будут включены,
те, что ниже порога, будут отключены.
# создать бинарную маску с порогом, найденным методом Оцу двоичная_маска = размытое_изображение> t рис, топор = plt.subplots() plt.imshow (бинарная_маска, cmap = "серый")
Наконец, мы используем маску для выбора переднего плана:
# применить бинарную маску для выбора переднего плана выбор = изображение.копировать() выбор[~бинарная_маска] = 0 рис, топор = plt.subplots() plt.imshow (выбор)
Применение: измерение корневой массы
Теперь обратимся к приложению, в котором мы можем применить пороговое значение и
другие методы, которые мы изучили к этому моменту.
Рассмотрим эти четыре изображения корневой системы кукурузы,
которые вы можете найти в файлах data/trial-016. jpg
, data/trial-020.jpg
, data/trial-216.jpg
,
и data/trial-293.jpg
.
Предположим, нас интересует количество растительного материала на каждом изображении, и, в частности, как эта сумма меняется от изображения к изображению. Возможно, изображения представляют собой рост растения с течением времени, или, возможно, изображения показывают четыре разных сорта кукурузы одновременно. той же фазе их роста. Вопрос, на который мы хотели бы ответить, звучит так: «Сколько корневой массы на каждом изображении?»
Сначала мы создадим программу Python для измерения этого значения для одного изображения. Наша стратегия будет такой:
- Прочитайте изображение, преобразуя его в оттенки серого по мере чтения. Для этого приложение нам не нужно цветное изображение.
- Размыть изображение.
- Используйте метод определения порога Оцу для создания бинарного изображения, где пиксели, которые были частью растения кукурузы, белые, и все остальное черное.
- Сохраните бинарное изображение, чтобы его можно было просмотреть позже.
- Подсчитайте белые пиксели в бинарном изображении и разделите на количество пикселей в изображении. Это соотношение будет мерой корневая масса растения на изображении.
- Вывести название обработанного изображения и коэффициент массы корня.
Наша цель — выполнить эти шаги и получить числовой результат — мера массы корня на изображении - без вмешательства человека. Реализация шагов в функции Python будет позволяют нам вызывать эту функцию для разных изображений.
Вот функция Python, которая реализует эту стратегию измерения корневой массы. Поскольку функция предназначена для вывода числовых значений без участия человека, он не отображает ни одно из изображений. Почти все команды должны быть знакомы, и на самом деле, он может показаться проще, чем код, над которым мы работали до сих пор, потому что мы не отображаем ни одно из изображений.
def Measure_root_mass (имя файла, сигма = 1,0): # читать исходное изображение, конвертируя в оттенки серого на лету изображение = iio. imread (uri = имя файла, режим = «L») # размытие перед порогом blurred_image = skimage.filters.gaussian (изображение, сигма = сигма) # выполнить автоматическую пороговую обработку для создания бинарного изображения t = skimage.filters.threshold_otsu (размытое_изображение) двоичная_маска = размытое_изображение> t # определить коэффициент массы корней rootPixels = np.count_nonzero(binary_mask) w = двоичная_маска.форма[1] ч = двоичная_маска.форма[0] плотность = корневые пиксели / (ш * ч) плотность возврата
Функция начинается с чтения исходного изображения из файла имя файла
.
Мы используем iio.imread()
с необязательным аргументом mode="L"
для
автоматически преобразовать его в оттенки серого.
Затем изображение в градациях серого размывается фильтром Гаусса с
значение сигма
, которое передается функции.
Затем мы определяем порог t
методом Оцу и
создайте двоичную маску так же, как мы делали это в предыдущем разделе. До этого момента все должно быть знакомо.
Заключительная часть функции определяет соотношение масс корней на изображении.
Напомним, что в binary_mask
каждый пиксель имеет либо значение
ноль (черный/фон) или один (белый/передний план).
Мы хотим подсчитать количество белых пикселей,
что может быть выполнено с помощью вызова функции numpy np.count_nonzero
.
Затем мы определяем ширину и высоту изображения с помощью
элементы binary_mask.shape
(то есть размеры массива numpy, в котором хранится изображение).
Наконец, коэффициент плотности рассчитывается путем деления количества белых пикселей на
по общему количеству пикселей ш*ч
на изображении.
Функция возвращает корневую плотность изображения.
Мы можем вызывать эту функцию с любым именем файла и
укажите значение сигмы для размытия.
Если значение сигмы не указано, будет использоваться значение по умолчанию 1,0.
Например, для файла data/trial-016.jpg
и значения сигмы 1,5,
мы бы назвали эту функцию так:
Measure_root_mass (filename="data/trial-016. jpg", sigma=1.5)
0,0482436835106383`
Теперь мы можем использовать эту функцию для обработки серии из четырех изображений, показанных выше. В реальной научной ситуации могут быть десятки, сотни, или даже тысячи изображений для обработки. Чтобы избавить нас от утомительного вызова функции для каждого изображения вручную, мы можем написать цикл, который автоматически обрабатывает все файлы. Следующий блок кода предполагает, что файлы расположены в одном каталоге и имена файлов начинаются с пробная версия - префикс и заканчиваются суффиксом .jpg .
all_files = glob.glob("data/trial-*.jpg") для имени файла в all_files: плотность = мера_корневой_массы (имя файла = имя файла, сигма = 1,5) # вывод в формате, подходящем для .csv печать (имя файла, плотность, sep=",")
data/trial-016.jpg, 0,0482436835106383 данные/проба-020.jpg,0,06346941489361702 данные/проба-216.jpg,0.14073969414893617 данные/проба-293. jpg,0.13607895611702128
Игнорирование других изображений – мозговой штурм (10 мин)
Давайте подробнее рассмотрим бинарные маски, созданные функцией
Measure_root_mass
.Возможно, вы заметили в разделе об автоматическом пороговом значении, что изображение с пороговым значением включает в себя области изображения, кроме корень растения: пронумерованные метки и белые кружки на каждом изображении сохраняются при пороговой обработке, потому что их оттенки серого значения выше порога. Таким образом, наши расчетные отношения масс корней включают белые пиксели. этикетки и белого круга, которые не являются частью корня растения. Эти дополнительные пиксели влияют на точность расчета корневой массы!
Как мы можем удалить метки и круги перед вычислением коэффициента, чтобы наши результаты были более точными? Подумайте о некоторых вариантах, учитывая то, что мы уже узнали.
Решение
Один из подходов, который мы могли бы использовать, — попытаться полностью замаскировать область. от каждого изображения, в частности, область, содержащая белый кружок и пронумерованную метку. Если бы у нас были координаты прямоугольной области на изображении который содержал круг и этикетку, мы могли бы легко замаскировать область, используя методы, которые мы изучили в Рисование и побитовые операции эпизод.
Однако при ближайшем рассмотрении бинарных изображений возникают некоторые проблемы с этот подход. Поскольку корни не всегда ограничены определенной областью изображения, и поскольку круги и метки каждый раз находятся в разных местах, нам было бы трудно придумать единственный прямоугольник, который работать для каждого изображения. Мы могли бы создать отдельный маскирующий прямоугольник для каждого изображения, но это не практичный подход если у нас есть сотни или тысячи изображений для обработки.
Другой подход, который мы могли бы использовать, это чтобы применить к изображению два пороговых шага. Посмотрите на гистограмму уровней серого файла
data/trial-016. jpg
. снова выше: Заметили пик около 1,0? Напомним, что значение оттенков серого 1,0 соответствует белым пикселям: пик соответствует белой метке и кружку. Таким образом, мы могли бы использовать простую бинарную пороговую обработку, чтобы замаскировать белый кружок и этикетка с изображения, а затем мы могли бы использовать метод Оцу, чтобы выбрать пиксели в растительная часть изображения.Обратите внимание, что большая часть этой дополнительной работы по обработке изображения могла быть избежать на этапе экспериментального проектирования, с некоторым тщательным рассмотрением того, как будут использоваться полученные изображения. Например, все следующие меры могли бы упростить изображения. для обработки, помогая нам предсказать и/или определить, где находится метка на изображении и впоследствии замаскировать его от дальнейшей обработки:
- Использование этикеток одинакового размера и формы
- Размещение всех этикеток в одинаковом положении относительно образца
- Использование небелой этикетки с нечерным шрифтом
Игнорирование большего количества изображений – реализация (30 мин – необязательно, не включено во время)
Реализовать расширенную версию функции
Measure_root_mass
который применяет простое двоичное пороговое значение для удаления белого круга и маркируйте с изображения перед применением метода Оцу.Решение
Мы можем применить простую бинарную пороговую обработку с порогом
t=0,95
, чтобы удалить метку и кружок с изображения. Мы используем бинарная маска, чтобы обнулить пиксели в размытом изображении (черный).def advanced_root_mass (имя файла, сигма): # читать исходное изображение, конвертируя в оттенки серого на лету изображение = iio.imread (uri = имя файла, режим = «L») # размытие перед порогом blurred_image = skimage.filters.gaussian (изображение, сигма = сигма) # выполнить бинарную пороговую обработку, чтобы замаскировать белую метку и кружок двоичная_маска = размытое_изображение <0,95 # используем маску, чтобы удалить круг и метку с размытого изображения размытое_изображение[~бинарная_маска] = 0 # выполнить автоматическую пороговую обработку для создания бинарного изображения t = skimage.filters.threshold_otsu (размытое_изображение) двоичная_маска = размытое_изображение> t # определить коэффициент массы корней rootPixels = np. count_nonzero(binary_mask) w = двоичная_маска.форма[1] ч = двоичная_маска.форма[0] плотность = корневые пиксели / (ш * ч) плотность возврата all_files = glob.glob("data/trial-*.jpg") для имени файла в all_files: плотность = расширенная_корневая_масса (имя файла = имя файла, сигма = 1,5) # вывод в формате, подходящем для .csv печать (имя файла, плотность, sep=",")Выходные данные улучшенной программы показывают, что белые круги а этикетки искажали наши коэффициенты массы корней:
data/trial-016.jpg, 0,045935837765957444 данные/проба-020.jpg,0,058800033244680854 data/trial-216.jpg,0.13705003324468085 данные/проба-293.jpg,0.13164461436170213Вот бинарные изображения, созданные дополнительной пороговой обработкой. Обратите внимание, что мы не полностью удалили нежелательные белые пиксели. Очертания еще остались. Однако мы уменьшили количество посторонних пикселей, что должно сделать вывод более точным.
Пороговое изображение колонии бактерий (15 мин)
В каталоге изображений
data/
вы найдете изображение с именемcolonies-01. tif
.Это одно из изображений, с которым вы будете работать в морфометрический тест в конце семинара.
- Постройте и проверьте гистограмму изображения в градациях серого, чтобы определить хорошее пороговое значение для изображения.
- Создайте бинарную маску, которая оставляет пиксели в бактериях колонии «включаются» при включении остальных пикселей изображения "выключенный".
Решение
Вот код для создания гистограммы в градациях серого:
изображение = iio.imread(uri="data/colonies-01.tif") gray_image = skimage.color.rgb2gray(изображение) blurred_image = skimage.filters.gaussian (grey_image, sigma = 1,0) гистограмма, bin_edges = np.histogram (blurred_image, интервалы = 256, диапазон = (0,0, 1,0)) рис, топор = plt.subplots() plt.plot(bin_edges[0:-1], гистограмма) plt.title("Гистограмма уровней серого") plt.xlabel("серое значение") plt.ylabel("количество пикселей") plt. xlim(0, 1.0)Пик рядом с единицей соответствует белому фону изображения, а более широкий пик около 0,5 соответствует желто-коричневому питательная среда в чашке. Небольшой пик около нуля — это то, что нам нужно: темные колонии бактерий. Таким образом, разумным выбором может быть оставить включенными пиксели ниже
t=0,2
.Вот код для создания и показа бинарного изображения с помощью
<
оператор с порогомt=0,2
:т = 0,2 двоичная_маска = размытое_изображение < t рис, топор = plt.subplots() plt.imshow (бинарная_маска, cmap = "серый")Если немного поэкспериментировать с порогом, можно увидеть, что в особенно размер колонии бактерий у края блюдо в правом верхнем углу зависит от выбора порога.
Ключевые моменты
Пороговое значение создает бинарное изображение, в котором все пиксели с интенсивностью выше (или ниже) порогового значения включены, а все остальные пиксели выключены.
Двоичные изображения, созданные пороговой обработкой, хранятся в двумерных массивах NumPy, поскольку они имеют только один канал значения цвета. Они логические, поэтому содержат значения 0 (выключено) и 1 (включено).
Пороговое значение можно использовать для создания масок, выделяющих только интересные части изображения, или в качестве первого шага перед обнаружением краев или поиском контуров.
Обнаружение путем пороговой обработки · Анализ изображений флуоресцентной микроскопии с помощью ImageJ
Работает на GitBook
Схема главы
Процесс обнаружения интересных объектов на изображении называется сегментацией, и результатом часто является бинарное или размеченное изображение
Глобальная пороговая установка идентифицирует пиксели со значениями в определенных диапазонах
Пороги могут быть рассчитаны из гистограмм изображения
Сочетание пороговой обработки с фильтрацией и вычитанием изображения он подходит для широкого спектра изображений
Двоичные изображения можно использовать для создания областей интереса или других представлений объектов
Измерения и интересующие области описаны способы проведения измерений с помощью ROI, нарисованные вручную. Это может быть хорошо в простых случаях, когда есть не слишком много вещей для анализа, но предпочтительнее найти способы автоматизировать процесс определения регионов – не только потому, что это вероятно, будет быстрее, но потому что он должен давать более воспроизводимые и менее предвзятые результаты.
Объекты, сегментация, бинарные и помеченные изображения
В литературе по обработке изображений интересными структурами изображений являются часто называемые объекты (или иногда связанных компонентов ) и часто неприятным процессом их обнаружения является сегментация изображения .
Большинство методов, описанных в следующих главах, можно нанизывать вместе, чтобы точно сегментировать изображение. В случае успеха, результатом может быть бинарное изображение , в котором каждый пиксель может иметь только один из два значения, чтобы указать, является ли он частью объекта или нет, или изображение с меткой , в котором все пиксели являются частью одного и того же объекта имеют одинаковое уникальное значение. Обычно сначала концентрируются на создание бинарного изображения, а затем создать помеченное изображение, только если необходимо путем идентификации отдельных кластеров пикселей объекта и присвоение им меток.
Обычный способ создания бинарного изображения — пороговое значение : определение пикселей выше или ниже определенного порогового значения. В ImageJ, команда Image ▸ Adjust ▸ Threshold… позволяет определить как низкие, так и высокие пороговые значения, так что только пиксели, попадающие в указанный диапазон найден. Выбрав подходящие пороги, нажав Применить создает бинарное изображение [1] . Поскольку одинаковые пороги применяются к каждому пикселю всего изображения, это пример глобального порога — это действительно своего рода точка операция, так как вывод для любого пикселя зависит только от пикселя первоначальная стоимость и ничего больше.
Выбор результатов с установленными вручную пороговыми значениями
Загадка глобального порогового значения заключается в том, как определить пороговые значения
разумно. Если вы откроете Файл ▸ Открыть образцы ▸ Клетки HeLa и разделите
каналы (Изображение ▸ Цвет ▸ Разделить каналы), вы можете использовать пороговое значение …
интерактивно опробовать различные возможности для каждого канала. Ты
должны вскоре заметить опасность в этом: результаты (особенно в
красный или зеленый каналы) могут быть очень чувствительны к порогу, который вы
выбирать. Низкие пороги имеют тенденцию обнаруживать еще конструкций, а также к
сделать их на больше — до точки, в которой структуры сливаются, и
затем снова обнаруживается на меньше (Рисунок 1).
Другими словами, иногда можно использовать ручные пороги, чтобы получить больше или
меньше любого результата, который вы хотите, что может полностью изменить
интерпретация данных. Для выдающегося ученого, обнаружившего это
ситуация обескураживает, поэтому ImageJ предлагает ряд автоматизированных
методы определения порога в раскрывающемся списке в Порог…
инструмент. Они описаны на
http://imagej.net/Auto_Threshold, часто со ссылками на
оригинальные опубликованные документы, на которых они основаны. Фиджи
Команда «Изображение» ▸ «Настроить» ▸ «Автоматический порог» предоставляет дополнительные параметры,
включая возможность применить все пороги и посмотреть, какой из них
по-видимому, обеспечивает наилучшие результаты.
Определение порогов по гистограммам
Не существует универсально применимой стратегии для определения порога; изображений слишком сильно различаться. Однако по своей природе пороговое значение предполагает, что два класса пикселей на изображении – те, что относятся к интересным объекты, а те, что нет — и пиксели в каждом классе имеют разные значения интенсивности [2] . Всякий раз, когда ценности значимы, но их точное местоположение на изображении либо неизвестно, либо неважно, это информация аккуратно суммируется в гистограмме изображения. Поэтому Методы ImageJ для поиска пороговых значений не работают непосредственно с изображениями. а скорее на их гистограммах – что значительно проще.
Обоснование этого можно увидеть на рисунке 2. Глядя на изображение, два ядра очевидны: они явно имеют более высокие значения, чем фон (A). Однако, глядя на гистограмму только (B) мы могли бы уже сделать вывод, что существует класс фоновые пиксели (высокий пик слева) и класс «другое», четко различимые пиксели (намного более мелкий пик справа). К выбирая порог между этими двумя пиками – где-то около 400 – ядра могут быть четко разделены (C). Выбор порога намного выше или ниже этого дает менее впечатляющие результаты (D).
На рис. 3 показан более сложный пример. в на самом изображении структуры не очень четко определены, и во многих случаях не очевидно, хотим ли мы рассматривать какой-либо конкретный пиксель как «достаточно яркий» для обнаружения или нет (A). Гистограмма также изображает эту неопределенность; происходит более плавный переход между фоновый пик и передний план (B). Результаты применения двух показаны различные автоматизированные пороги (C) и (D). Оба в каком-то смысле оправдано, и решение, которое является наиболее подходящим, потребует более глубокое понимание того, что содержит изображение и что должно быть проанализировано.
Применение глобальных пороговых значений хорошо подходит для простых изображений, для которых порог явно существует, но на практике так бывает редко прямолинейно – и часто никакое пороговое значение, ручное или автоматическое, не дает полезные результаты. Этот раздел предвосхищает следующую главу о фильтрах. показывая, что с некоторой дополнительной обработкой пороговое значение можно исправить даже если изначально кажется, что он работает плохо.
Пороговое определение зашумленных данных
Шум — это одна из проблем, влияющих на пороговые значения, особенно в живых ячейках. визуализация. Верхняя половина рисунка 4 воспроизводит ядра с рис. 2, но с дополнительным шумом для имитации далеких от идеальных условий изображения. Несмотря на то, что ядра на изображении (A) все еще отчетливо видны два класса пикселей, ранее легко отделить в гистограмме теперь слились вместе (B). метод порога треугольника, который раньше работал хорошо, теперь дает менее привлекательные результаты (C), потому что шум вызвал диапазоны фоновые и ядерные пиксели перекрываются. Однако, применяя гауссову фильтр сглаживает изображение, тем самым уменьшая большую часть случайного шума (см. Фильтры), что делает гистограмму значительно более аналогично исходному, (почти) бесшумному изображению, а порог снова вполне успешен (F).
Локальное пороговое значение
Другая распространенная проблема заключается в том, что появляются структуры, которые должны быть обнаружены.
поверх фона, который сам по себе имеет разную яркость. Например, в
красный канал клеток HeLa
нет единого глобального порога
способен идентифицировать и разделять все «пятнистые» структуры;
любой выбор пропустит многие места, потому что порог достаточно высок
чтобы избежать фона, также будет слишком высоко, чтобы поймать все пятна
происходящие в более темных областях (рис. 5a–c).
В таких случаях было бы лучше, если бы мы могли определить другие пороги для разных частей изображения: локальный порог . Несколько методов, чтобы сделать это реализованы на Фиджи Изображение ▸ Настроить ▸ Автоматический локальный порог и описано в http://imagej.net/Auto_Local_Threshold. Однако, если эти недостаточны, легко реализовать собственное локальное пороговое значение и получить больший контроль над результатом, если мы подумаем о проблеме с немного другой ракурс. Предположим, у нас есть второе изображение, содержащее значения, равные пороговым значениям, которые вы хотите применить, и которые могут быть разные для каждого пикселя. Если мы просто вычесть это второе изображение с самого начала мы можем затем применить глобальный порог, чтобы определить, что мы хотеть.
Самое сложное это создать второе изображение, но опять приходят фильтры в полезном. Один из вариантов — медианный фильтр , который эффективно перемещается по каждому пикселю изображения, ранжирует соседние пиксели по порядку значения, и выбирает средний — тем самым удаляя все, что намного ярче или намного темнее, чем его окружение (D). Вычитание изображения с медианной фильтрацией из оригинала дает результат к которому можно с пользой применить глобальный порог (E).
Использование NaN
Хотя это и не является неотъемлемой частью идеи и типы изображений имеют значение двумя основными способами.
Первый появляется, когда
вы нажимаете Применить в диалоговом окне Threshold…
для 32-битного изображения.
Это представляет параметр Установить фоновые пиксели на NaN
, который вместо этого
создания бинарного изображения даст изображение, в котором
Пиксели переднего плана сохраняют свои исходные значения, а пиксели фона Не число . Это специальное значение, которое может быть сохранено только в
изображения с плавающей запятой, которые ImageJ игнорирует при проведении измерений
позже. Поэтому он используется для маскирования областей.
Биннинг гистограммы
Второй способ, в котором битовая глубина и типы имеют значение, заключается в том, что гистограммы изображений > 8 бит включают биннингов данных. Например, с 32-битным образом, вероятно, не имеет смысла создавать гистограмма, которая имеет отдельные счетчики для всех возможных значений пикселей: в в дополнение к подсчетам для пикселей с точными значениями 1 и 2, мы бы получили тысячи отсчетов для пикселей с дробями между ними (и большинство эти значения будут равны 0). Вместо этого гистограмма создается разделив общий диапазон данных (максимальные – минимальные значения пикселей) на 256 отдельно бинов с одинаковой шириной, и подсчет количества пикселей значения, попадающие в диапазон каждого бина. Поэтому это как тонкий преобразование в 8-битную точность для вычисления порога, но без фактически изменяя исходные данные. Используется тот же тип преобразования для 16-битных изображений — , если только вы не используете Изображение ▸ Настройка ▸ Команда Автопорог, которая использует полный 16-битный гистограмма с 65536 интервалами.
Хотя эффектами биннинга часто можно пренебречь, если общий диапазон значения пикселей в изображении очень велики, об этом стоит помнить.
Генерация и измерение областей интереса
Когда у нас есть бинарное изображение, следующим шагом будет идентификация объектов внутри это и измерить их. В 2D есть несколько вариантов:
Нажмите на объект инструментом
Wand
, чтобы создать измеримую рентабельность инвестиций из этоРедактировать ▸ Выделение ▸ Создать выделение создает одну область интереса, содержащую все пиксели переднего плана. Несвязанные области можно разделить добавление ROI в ROI Manager и выбор
Подробнее >> Сплит
.Analyze ▸ Analyze Particles… обнаруживает и измеряет все области переднего плана как отдельные объекты.
Анализ частиц…
является наиболее автоматизированным и универсальным вариантом,
что позволяет игнорировать области, которые особенно малы или
большие, прямые или круглые (с использованием метрики Circularity
). Он также может
вывод сводных результатов и добавление ROI для каждого региона в ROI Manager. С Show: Count Masks
опция, она создаст помеченное изображение,
в котором каждый пиксель имеет уникальное целочисленное значение, указывающее количество
объект, частью которого он является, или ноль, если он находится на заднем плане. С
подходящая красочная LUT, это может создать полезный и веселый дисплей
(Рисунок 6).
Перенаправление измерений
Хотя бинарные изображения могут отображать формы измеряемых объектов,
измерения интенсивности пикселей, сделанные на бинарном изображении, не очень
полезный. Вы можете использовать описанные выше методы для создания ROI из бинарных файлов.
изображения, затем примените их к исходному изображению, чтобы получить смысл
измерения. Однако можно избежать этого дополнительного шага,
изменение Перенаправить на:
вариант под Задать измерения…
. Этот
позволяет измерять ROI или запускать Analyze Particles…
с одним изображением
выбраны и используются для определения регионов, перенаправляя ваш
измерения должны быть сделаны на совершенно другом изображении по вашему выбору.