Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/26: Рейтинг темы: голосов - 26, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 3

Детектирование трещин на изображении

13.12.2012, 10:00. Показов 5680. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, уважаемые господа и дамы.
Я нахожусь в критической ситуации, когда сам уже ничего не могу придумать и понять, а завершить работу надо.
Суть в том, что у меня есть серия фотографий (к сожалению весьма некачественных, но какие дали, с такими и работаю) материала (каучук) на котором со временем образуются трещины, фотографии делались на протяжении какого-то периода и видно развитие этих самых трещин. Так вот: мне надо обработать все эти фотографии и на каждой найти эти трещины, обвести их и вычислить их площадь, а я застрял на первом шаге - найти. Может быть у Вас будут какие-то идеи?
З.Ы. Ссылка с фотографиями - http://postimage.org/gallery/fdnefu2/ .
Заранее большое спасибо. Очень надеюсь на Вашу помощь.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.12.2012, 10:00
Ответы с готовыми решениями:

Детектирование текста на изображении, антиспам
Нужно определить есть ли на изображении текст или нет. На картинке может быть рекламная информация: телефоны, текст, что запрещено. ...

Появление трещин Acer Nitro 5
Всем привет. Вопрос владельцам nitro 5. У кого нибудь есть проблемы связанные появлением трещин в районе петель на топкейсе?

Механика разрушения, теория трещин
Добрый день! Кто может мне помочь разобраться в теме механика разрушения, теория трещин, а именно моделирование раскрытия трещины разрыва....

7
49 / 49 / 3
Регистрация: 07.12.2012
Сообщений: 201
Записей в блоге: 1
13.12.2012, 10:56
R G B кодировка черного 0 0 0.
Ну а теперь осталось дело за малым определиться со средним цветом фона и трещин и забить это все в if который будет в двух циклах и ... и еще ... и готово.
В общем идею подал сейчас нет времени вечером постараюсь что нибудь написать)
1
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
13.12.2012, 11:04
Выделить контуры трещин можно так:
Matlab M
1
2
3
4
5
6
7
Ic = imread('IMG_4762.jpg');
I = rgb2gray(Ic);
imshow(I)
 
BW1 = edge(I,'canny');
figure
imshow(BW1)
2
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
13.12.2012, 11:22
В функции edge можно выставить тип и уровень перехода (о чем говорил Hideo_Kuze)
Посмотреть подробней можно, если ввести в командной строке:
doc edge

А вот еще классная статья http://habrahabr.ru/post/114335/
Из нее можно вырвать кусок и применить к нашему случаю:
Matlab M
1
2
3
4
5
6
7
8
clear,clc
 
img = imread('IMG_4762.jpg'); % загружаем фото
grayimg = rgb2gray(img); % преобразуем
grayimg = imadjust(grayimg); % выравниваем яркость
bw = edge(grayimg,'canny',0.5); % выделяем контуры
bw = imfill(bw,'holes'); % заливаем замкнутые контуры
imshow(bw);


Здесь в строке 6 число 0.5 - это порог перехода, если поиграться с ним, то можно увидеть разную глубину трещин.

По поводу площади, то можно считать относительную площадь так:
S = sum(bw()/length(bw() % отношение площади белых элементов к общей площади изображения.
Сравнивая S для разных фотографий при одинаковом пороге, можно судить о изменении площади трещин.
2
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 3
13.12.2012, 11:55  [ТС]
Hideo_Kuze, Зосима, спасибо Вам большое!
Зосима, я пытался использовать edge, но так и не разобрался с этой функцией, в документации не смог найти чего-то, что помогло бы мне, спасибо за наглядный пример. Может быть порекомендуете какую-либо литературу по этой теме?
З.Ы. на тему округлостей вот альтернативный вариант, тоже интересный http://habrahabr.ru/post/114335/
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
13.12.2012, 12:59
Есть статейка - перевод на руский матлабовского хелпа ф-ции edge.
Но дело в том, что я с обработкой изображений в матлабе практически дела не имел и что-то еще подсказать не могу
0
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 3
13.12.2012, 19:03  [ТС]
Hideo_Kuze, если Вас не затруднит, не могли бы Вы пояснить подробнее, как можно реализовать тот алгоритм, о котором Вы говорите, я сам не разберусь, это что-то типа http://blogs.mathworks.com/ste... a-b-plane/ ?
0
49 / 49 / 3
Регистрация: 07.12.2012
Сообщений: 201
Записей в блоге: 1
14.12.2012, 03:43
То что я говорил походу является той же самой функцией edge только написанной в ручную.
Если раньше не разберетесь то часов в 10-11:30(Киевского времени) я этим займусь просто к сожалению нет возможности задержаться за компьютером. Я предлагаю пробегать последовательно все пиксели и там где R G B будет меньше чем среднее на картинке на определенное значение закрашивать красным и считать количеством таких пикселей потом соотнести их с количеством пикселей на всей картинки.

Добавлено через 8 часов 32 минуты
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function [im1,per] = zadcha(img,dt)
 
img=double(img);
sr=sum(sum(sum(img)))/prod(size(img)); %Находим средний оттенок изображения
sz=size(img);
p=0;
im1=img;
a=19;% Так как оттенок в углу практически равен оттетнку трещины пришлось 
b=429;%ограничить зону поиска
for n=a:1:b;
    for nn=1:1:sz(2);
        if sum(img(n,nn,:))<(sr-dt);%dt разница в оттенке трещины и среднего оттенка
           im1(n,nn,:)=[255,0,0]; %Закрашиваем красным трещины
            p=p+1; %находим их количество
       end
    end
       
end
per=(p/(sz(1)*(b-a)))*100; 
im1=uint8(im1);
image(im1);
per=roundn(per,-2);
text(sz(2)-60,sz(1)-25,sprintf('%%%g',per), 'BackgroundColor',[.7 .9 .7]) 
end
В командной строке "zadcha(img,-10);"
Ня!)
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.12.2012, 03:43
Помогаю со студенческими работами здесь

Детектирование ASK
Здравствуйте! Подскажите пожалуйста как определить пороговое напряжение для детектирования сигнала после амплитудной манипуляции.

Детектирование 0
Добрые люди, подскажите новичку: Есть китайский блок питания на 5 вольт, от которого планируется запитывать МК (схему по плате...

Детектирование прямоугольных объектов
watch.Reset(); watch.Start(); List&lt;MCvBox2D&gt; boxList = new List&lt;MCvBox2D&gt;(); //a box is a rotated rectangle ...

Детектирование движущихся объектов
Здравствуйте. Прошу помощи в реализации программы для обнаружения движущихся объектов на видео, поступающем непосредственно с камеры. Т.е....

Детектирование фазы сигнала
Всем привет! Учусь работать в Matlab и решил сделать фазовый детектор, пока для простых сигналов. Использую преобразование фурье, т.е...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru