Как самостоятельно отремонтировать порог автомобиля
Содержание
- Как проводить ремонт несъемных частей
- Проводим ремонт съемных частей своими руками
- Как вытянуть порог обратным молотком
- Вытягивание поврежденного участка присоской
- Как проводится рихтовка споттером из микроволновки
Рано или поздно владельцам автомобилей приходится проводить ремонт порогов, особенно если в пользовании уже не новый, а подержанный автомобиль. Даже если водитель очень аккуратно ездит, ему все равно необходимо следить за состоянием деталей, периодически диагностировать их на наличие механических повреждений и сколов. Приобретение новых порогов обходятся весьма недешево, поэтому ради экономии, можно прибегнуть к альтернативе – сделать ремонт автомобильных порогов своими руками.
В материале подробнее о том, как выправить порог автомобиля, а также устранить дефекты своими руками.
Как проводить ремонт несъемных частей
Детали, которые не демонтируются можно ремонтировать при помощи вытяжки или методом рихтовки. Несъемные детали порогов представлены в форме сложной системы основным элементом, которой является усилитель. Такой элемент очень важен для защиты кузова, а также является частью декора.
Как отремонтировать пороги, когда нет возможности снять деталь? Один из вариантов – применить строительную пену. Пена позволяет уберечь детали от коррозии, а также помогает сохранить существующие параметры уплотнителя. Но, пену стоит применять, только тогда, когда элементы не имеют ржавчины. Если она уже есть, то задувая пену в полости можно только ускорить процесс гниения металла.
Подгнившие пороги необходимо срезать, установить арку из стекловолокна.
Арка может быть вырезана из жести, а потом уже стоит обклеить её стекловолокном.
Важно, чтобы жесть была оцинкованная.
Во время ремонта автомобиль необходимо поставить на домкрат, тогда будет удобнее доставать до встроенных элементов. Если на пороге образовалась вмятина, то её можно вытянуть скобом или обратным молотком.
При таком методе отпадает потребность в покраске. Основная сложность для дилетанта и уже опытного человека в том, что деталь невозможно снять, а все ремонтные работы необходимо проводить на автомобиле.
Проводим ремонт съемных частей своими руками
Сделать пороги на автомобиле со съемными деталями? Ремонт съемных деталей можно делать только при помощи рихтовки. Опыта в рихтовке как такого не требуется, необходимо только орудовать молотком по металлу. Если проводится вытяжка, то необходимую деталь можно снять и просто укрепить на станке.
Такие детали не несут на себе силовую нагрузку, к днищу автомобиля они прикручиваются болтами. Перед ремонтом их стоит раскрутить, выровнять и потом установить на место.
Как вытянуть порог обратным молотком
Как сделать пороги на автомобиле используя обратный молоток. Чаще всего обратный молоток используют, чтобы добраться к несъемной детали. Чтобы провести выравнивание обратным молотком в первую очередь необходимо очистить место, которое подлежит восстановлению.
После очистки необходимо просушить и обезжирить участок, а также избавиться от коррозии. С помощью присоски или аппликатора, молоток необходимо прикрепить к центру ремонтируемого места. С помощью грузика наносятся удары по рукоятке молотка. Начинать следует с легких постукиваний, постепенно увеличивая силу удара. Выравнивание начинают с края вмятины.
Таким образом, проводится выправка поврежденного участка. Когда внешняя сторона кузова приобретет прежний вид, то молоток можно отсоединить.
Выравнивание обратным молотком является самым надежным способом, который оберегает от внутренней коррозии.
Вытягивание поврежденного участка присоской
Как вытянуть порог на автомобиле своими руками с помощью присоски? Такой вид вытягивания можно проводить на любом автомобиле, любой марки. Перед началом вытягивания необходимо подготовить автомобиль и место, где будет проходить ремонт. Потребность отремонтировать пороги на автомобиле лучше проводить в гараже или в каком-то помещении, также возможно производить ремонт на улице, но при хорошей погоде.
Деталь не демонтируется. Присоску необходимо прикрепить к ремонтируемому месту, важно следить за тем, чтобы края присоски как можно плотнее прилегали к металлу. Если за этим не следить, то выравнивание не будет успешным.
После того, как присоска будет плотно прилегать к металлу, необходимо откачать весь воздух из полости. Когда воздух выкачан, можно переходить к выравниванию. Для этого нужно потянуть за ручку присоски в необходимом вам направлении. Чаще всего не много упорства и силы человека вполне достаточно для выравнивания, но при необходимости можно использовать лебедки. Присоска вытягивается вместе с металлической обшивкой.
Тем самым деталь возвращается на место.
После этих манипуляций воздух в полость можно запускать обратно. Вместе с попаданием воздуха присоска открепляется от поверхности автомобиля.
Если имеется деформация или искажения в сложной форме, то можно использовать несколько присосок одновременно.
Выравнивание присоской достаточно бережное и аккуратное, но, тем не менее, в редких случаях может понадобиться покраска.
Как проводится рихтовка споттером из микроволновки
Даже если водитель ездит очень аккуратно, на состояние его автомобильных порогов всё равно влияет состояние дорог, а также ударные толчки, которые водитель получает во время езды. Проводить ремонт порогов автомобиля своими руками без сварки можно еще одним способом, рихтовкой при помощи споттера.
Споттер означает «корректировщик», прибор исходя из названия, состоит из уже нерабочей микроволновой печи. Активно используется именно для кузовного ремонта при несъёмных порогах автомобиля.
Сделать пороги на авто своими руками можно рихтовкой, но, стоит отметить, что после ремонтных работ требуется покраска.
Перед началом рихтовки необходимо провести шлифовку поверхности при помощи болгарки. Для этого следует использовать защитные очки, так как могут отлетать мелкие частички и будут доставлять неудобства. Далее снимается минусовая клемма и на место искривления привариваются несколько крючков или колец.
При помощи обратного молотка или упора проводится вытяжка поврежденного участка. Возобновляя пороги на авто своими руками с помощью обратного молотка процедуру можно проводить несколько раз, пока порог не приобретет прежний вид.
Приваренные кольца убираются, а места, на которые они крепились, зачищаются при помощи болгарки.
Сам порог необходимо зачистить, обезжирить и нанести грунтовку.
Когда эти моменты будут учтены, то переходим к нанесению шпаклёвки и покраски детали эмалью. Финальный шаг, наносим антигравийный состав.
С такими легкими рекомендациями вы теперь знаете, как выпрямить порог на автомобиле своими руками. Вытягивание порога может занять несколько часов вашего времени. Есть много видео обзоров, которые подскажут как проводится замена и ремонт порогов самостоятельно без помощи специалистов.
Как вам статья?
Ремонт порогов автомобиля своими руками » АвтоНоватор
Автомобильные пороги — та часть нашего транспортного средства, которая подвергается негативному воздействию окружающей среды в первую очередь.
Простой ремонт порогов автомобиля
Высокий уровень влажности в осенне-зимний период в сочетании с постоянными перепадами температуры способны весьма негативно отразиться на лакокрасочном покрытии кузова автомобиля, а его днище рано или поздно начнет подвергаться коррозийным процессам. И в первую очередь всегда страдают именно пороги авто.
Помимо появления ржавчины, пороги автомобиля постоянно подвергаются воздействию крутящих и изгибающих моментов, нагрузкам вибрационного плана. Нередко на них появляются неприятные взору вмятины (в основном, из-за неправильного использования домкрата). Тем не менее, справиться с задачей ремонта автомобиля в этом случае не так уж сложно. Достаточно просто произвести вытяжку и правку порогов. Правда, иногда понадобится и замена ремонтируемых вставок, вырезка поврежденных участков. Именно это позволит продлить жизнь автомобилю в целом.
Стоит отметить, что автомобильные пороги могут быть несъемными, а могут и наоборот — съемными. Несъемными называют обычно такие пороги, которые объединены путем сварки с днищем авто в единое целое. Съемные пороги размещаются непосредственно в салоне авто и крепятся специальными винтами к основанию кузова. Именно эти детали обеспечивают машине надежную защиту от выброса, который может попадать на кузов из-под колес и повреждать его.
Инструменты для ремонта автомобильных порогов:
— верстак или опорная плита;
— инструменты для проведения рихтовки;
— болгарка и сварочный аппарат или пневмозубило.
Ремонт несъемных порогов авто
Несъемные автомобильные пороги ремонтировать не всегда сложно — это будет зависеть только от того, насколько поврежден сам порог. При наличии небольших повреждений или складок на поверхности порога, его достаточно выправить на место снаружи при помощи специальной вытяжки. Осуществляется вытяжка с использованием споттера и инерционного съемника.
Если вы обнаружите повреждения средней степени тяжести, зону ремонта придется демонтировать. Для этого с автомобиля снимаются двери, а также вынимаются сидения.
Вы можете воспользоваться несколькими способами ремонта автомобиля. Первый заключается в том, чтобы с боковой стороны порога прорезать окно в форме квадрата. Тогда вы сможете осуществлять ремонт участка при помощи вытяжки, гидравлических инструментов и наковаленок. Наковаленки необходимы для того, чтобы поддерживать лист порога в процессе выпрямления согнутых участков. По размерам и форме они могут отличаться. Участки с помощью инструментов могут восстанавливаться в разных местах (обычно характер повреждений является классическим). Если форма порога была полностью восстановлена, то окно, через которое осуществлялась рихтовка, можно заварить.
- Автор: Андрей
- Распечатать
Оцените статью:
(1 голос, среднее: 1 из 5)
Поделитесь с друзьями!
Adblock
detector
— обработка изображений с помощью 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.
t
где-то перед большим пиком и
выключите пиксели выше этого значения.
Выберем t=0,8
. Для применения порога t
,
мы можем использовать операторы сравнения numpy для создания маски.
Здесь мы хотим включить все пиксели, значения которых меньше порогового значения.
поэтому мы используем оператор less <
для сравнения blurred_image
с порогом t
.
Оператор возвращает маску, которую мы фиксируем в переменной binary_mask
.
Он имеет только один канал, и каждое из его значений равно 0 или 1.
Двоичная маска, созданная операцией пороговой обработки, может быть показана с помощью plt.imshow
,
где записи
отображаются как черные пиксели
(со значением 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.
. снова выше: Заметили пик около 1,0? Напомним, что значение оттенков серого 1,0 соответствует белым пикселям: пик соответствует белой метке и кружку. Таким образом, мы могли бы использовать простую бинарную пороговую обработку, чтобы замаскировать белый кружок и этикетка с изображения, а затем мы могли бы использовать метод Оцу, чтобы выбрать пиксели в растительная часть изображения.jpg
Обратите внимание, что большая часть этой дополнительной работы по обработке изображения могла быть избежать на этапе экспериментального проектирования, с некоторым тщательным рассмотрением того, как будут использоваться полученные изображения. Например, все следующие меры могли бы упростить изображения. для обработки, помогая нам предсказать и/или определить, где находится метка на изображении и впоследствии замаскировать его от дальнейшей обработки:
- Использование этикеток одинакового размера и формы
- Размещение всех этикеток в одинаковом положении относительно образца
- Использование небелой этикетки с нечерным шрифтом
Игнорирование большего количества изображений – реализация (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 (включено).
Пороговое значение можно использовать для создания масок, выделяющих только интересные части изображения, или в качестве первого шага перед обнаружением краев или поиском контуров.
Учебники по программированию на Python
Добро пожаловать в другое руководство по OpenCV. В этом руководстве мы рассмотрим пороговое значение для анализа изображений и видео. Идея пороговой обработки заключается в дальнейшем упрощении визуальных данных для анализа. Во-первых, вы можете преобразовать в оттенки серого, но тогда вы должны учитывать, что оттенки серого по-прежнему имеют как минимум 255 значений. Что пороговое значение может сделать на самом базовом уровне, так это преобразовать все в белое или черное в зависимости от порогового значения. Допустим, мы хотим, чтобы порог был 125 (из 255), тогда все, что было 125 и меньше, будет преобразовано в 0, или черное, а все, что выше 125, будет преобразовано в 255, или белое. Если вы конвертируете в оттенки серого, как обычно, вы получите белый и черный. Если вы не конвертируете в оттенки серого, вы получите пороговые изображения, но будет цвет.
Хотя это звучит достаточно хорошо, часто это не так. Мы рассмотрим здесь несколько примеров и различные типы пороговой обработки, чтобы проиллюстрировать это. Мы будем использовать следующее изображение в качестве примера, но не стесняйтесь использовать и свое собственное:
Эта короткая заметка из книги является отличным примером того, почему можно использовать порог. Во-первых, фон действительно совсем не белый, все тусклое, но тоже все разное. Некоторые части достаточно светлые, чтобы их можно было легко прочитать, в то время как другие довольно темные и требуют особого внимания, чтобы их разобрать. Во-первых, давайте попробуем просто порог:
retval, threshold = cv2.threshold(img, 10, 255, cv2.THRESH_BINARY)
Двоичный порог — это простой порог «или-или», где пиксели равны 255 или 0. Во многих случаях это будет белый или черный, но пока мы оставили наше изображение цветным, так что его можно еще раскрасить. Первым параметром здесь является изображение. Следующий параметр — это порог, мы выбираем 10. Следующим является максимальное значение, которое мы выбираем как 255. Далее и, наконец, у нас есть тип порога, который мы выбрали как THRESH_BINARY. Обычно порог 10 был бы несколько плохим выбором. Мы выбираем 10, потому что это изображение при слабом освещении, поэтому мы выбираем меньшее число. Обычно что-то около 125-150, вероятно, будет работать лучше всего.
импорт cv2 импортировать numpy как np img = cv2.imread('bookpage.jpg') retval, порог = cv2.threshold(img, 12, 255, cv2.THRESH_BINARY) cv2.imshow («оригинал», изображение) cv2.imshow('порог',порог) cv2.waitKey(0) cv2.destroyAllWindows()
Результат:
Изображение теперь немного лучше для чтения, но все еще немного беспорядочно. Визуально лучше, но с помощью программы для анализа этого все равно будет довольно тяжело. Давайте посмотрим, сможем ли мы еще упростить его.
Сначала сделаем изображение в градациях серого, а затем установим порог:
импорт cv2 импортировать numpy как np оттенки серого = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) retval, порог = cv2.threshold (оттенки серого, 10, 255, cv2.THRESH_BINARY) cv2.imshow («оригинал», изображение) cv2.imshow('порог',порог) cv2.waitKey(0) cv2.destroyAllWindows()
Более просто, да, но мы все еще упускаем здесь много контекста. Затем мы можем попробовать адаптивную пороговую настройку, которая попытается изменить порог и, надеюсь, учесть искривление страниц.
импорт cv2 импортировать numpy как np th = cv2.adaptiveThreshold (оттенки серого, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 115, 1) cv2.