2 / 2 / 0
Регистрация: 26.09.2012
Сообщений: 75
1

"Избавиться" от объектов соприкасающихся с границей изображения

07.05.2013, 10:41. Показов 1397. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем добра!

У меня созрела идея, но я не знаю возможно ли её реализовать и, если да, то при помощи каких средств.

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

т.к. Matlab воспринимает его как матрицу пикселей (М1) со значениями 1 и 0 , то по идеи возможно работа с отдельными элементами матрицы.
Например, стоит задача "избавиться" от объектов соприкасающихся с границей изображения. Для этого необходимо запустить цикл по крайним пикселям (которые находятся на границах изображения) записывать их номера в другую матрицу (М2). Далее работать с М2, а именно запускать проверку по соседним пикселя, если таковые имеют значение 1, то присвоить им значение 0, т.о. "закрасить" эти объекты.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2013, 10:41
Ответы с готовыми решениями:

как сделать, чтоб изображения исчезали за границей блока
Подскажите, как сделать, чтоб изображния не выходили за область блока window? А пропадали сразу же...

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

Отображение изображения в блоке (как избавиться от обрезки?)
Добрый день. Прошу прощения, что первым постом, сразу же, задаю вопросы :) По форуму полазил, но...

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

2
1485 / 1412 / 240
Регистрация: 19.02.2010
Сообщений: 3,913
08.05.2013, 22:17 2
Реализовать - можно без проблем. В матлабе, наверное, тоже можно Просто я в матлабе не разбираюсь.

Я на С/С++ делал подобное - считал число объектов на изображении, размер объектов в пикселах (чтобы выкинуть объекты малого размера, например), у объекта анализировал форму и т.д. Доработать код для выкидывания граничных объектов - мне буквально 5 минут потребуется.
1
2 / 2 / 0
Регистрация: 26.09.2012
Сообщений: 75
13.05.2013, 10:11  [ТС] 3
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
Реализовать - можно без проблем. В матлабе, наверное, тоже можно Просто я в матлабе не разбираюсь.

Я на С/С++ делал подобное - считал число объектов на изображении, размер объектов в пикселах (чтобы выкинуть объекты малого размера, например), у объекта анализировал форму и т.д. Доработать код для выкидывания граничных объектов - мне буквально 5 минут потребуется.
Спасибо огромное за предложение помощи, но я уже нашёл решение, взято вот с этого сайта: http://matlab.exponenta.ru/ima... eature.php

У меня правда немного другой вариант получился, так как тут немножко лишнего есть, но суть остаётся той же)

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
25
26
27
28
29
30
31
32
33
34
% Пример демонстрирует построение гистограммы площадей объектов, не касающихся границ изображения.
% Чтение исходного изображения и вывод его на экран.
BW1=imread(split_bw.tif);
imshow(BWI);
% Поиск объектов.
[L num]=bwlabel(BW1, 8);
% Вычисление признаков объектов:
% площадей и координат центров масс.
feats=imfeature(L, 'Area', 'Centroid', 8);
% Переписывание значений признаков
% из массива структур feats в отдельные массивы.
Areas=zeros(num);
CentX=zeros(num);
CentY=zeros(num);
for i=1:1:num
Areas(i)=feats(l).Area;
CentX(i)=feats(i).Centroid(1);
CentY(i)=feats(i).Centroid(2);
end;
% Формирование бинарного изображения с объектами,
% площадь которых более 30 пикселов, а центр масс объекта удален
% от границ изображения более чем на 20 пикселов.
[rows cols]=size(BW1);
idx=find(Areas>30&CentX>20&CentY>20...
        &CentX<(cols-20)&CentY<(rows-20));
BW1=ismember(Lidx);
figure, imshow(BW1);
% Снова поиск объектов.
[L num]=bwlabel(BW1, 8);
figure, imshow(L+1, jet(num+1));
% Вычисление площадей объектов.
feats=imfeature(L, 'Area', 8);
% Построение гистограммы площадей объектов.
figure, hist([feats, Area]);
P.S. в коде присутствует n-ое количество ошибок, они мне помогли разобраться с механизмом некоторых функций, поэтому я решил их не исправлять)
1
13.05.2013, 10:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2013, 10:11
Помогаю со студенческими работами здесь

Как избавиться множественного наложения изображения при множественном нажатию на кнопку (Слайдер)?
Как избавиться множественного наложения изображения при множественном нажатию на кнопку (Слайдер)?...

Как нарисовать 40 соприкасающихся окружностей?
Задача следующая: Три окружности равного радиуса ( = 1) попарно соприкасающихся друг с другом...

Построение соприкасающихся окружностей в Autolisp
Помогите пожалуйста с заданием: Построение параметрических чертежей в среде AutoCAD 2010...

Обнаружение границ объектов изображения.
Кто знает где можно или как можно сделать данные методы!!! – метод Кирша; – метод Робертса; –...

Подсчёт количества объектов изображения
Добрый вечер, господа. Моя драма в следующем: Стоит задача посчитать количество объектов на...

Как избавиться от ошибки "Область растрового изображения уже заблокирована"?
Как избавиться от ошибки &quot;Область растрового изображения уже заблокирована&quot;?


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru