Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 5.00
Irushka
0 / 0 / 0
Регистрация: 18.10.2012
Сообщений: 4
#1

Бинаризация изображения - C++

18.10.2012, 22:25. Просмотров 3317. Ответов 5
Метки нет (Все метки)

Необходимо написать программу на С++ : преобразование полутонового изображения в бинарное,используя метод Ниблэка. Есть пошаговое выполнение этого метода, но я не понимаю, как писать код.) Возможно кто то сможет помочь?)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2012, 22:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Бинаризация изображения (C++):

Изменение яркости контрастности изображения. Бинаризация изображения - C++ Builder
Товарищи программисты помогите с разработкой алкоритма для изменеие яркости контрастности изображения, а токже осуществить бинаризацию...

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

Бинаризация изображения - MathCAD
как бинаризовать полученное ранее изображение? помогите пожалуйста

Бинаризация изображения - Delphi
Кто подскажет какой-нибудь интересный метод. Пробовал, Метод Оцу, и пороговые по RGB и HVS. Все что неделал, все безрезультатно, если...

Бинаризация изображения - C++ Builder
Очень нужно реализовать бинаризацию цветного изображения. (Конвертация к виду 256 градаций серого уже реализовано). Буду признателен...

Бинаризация изображения в .NET - C#
Здравствуйте! Поделитесь пожалуйста примером кода бинаризации цветного изображения или посоветуйте бесплатную библиотеку для этого. Мне...

5
Sor
35 / 35 / 0
Регистрация: 24.11.2011
Сообщений: 309
18.10.2012, 22:59 #2
А какой размер окрестности выборки нужен? окрестность 4х связная или 8ми?
0
Irushka
0 / 0 / 0
Регистрация: 18.10.2012
Сообщений: 4
18.10.2012, 23:17  [ТС] #3
я не знаю
что значит размер окрестности выборки ?
0
Sor
35 / 35 / 0
Регистрация: 24.11.2011
Сообщений: 309
18.10.2012, 23:27 #4
Идея данного метода состоит в варьировании порога яркости B бинаризации от точки к точке на основании локального значения стандартного отклонения. Порог яркости в точке (x, y) рассчитывается так: B(x, y)=m(x, y)+k s(x, y),

где μ(x, y) – среднее и s(x, y) — среднеквадратичное отклонение выборки для некоторой окрестности точки. Размер окрестности должен быть минимальным, но таким, чтобы сохранить локальные детали изображения. В то же время размер должен быть достаточно большим, чтобы понизить влияние шума на результат. Значение k определяет, какую часть границы объекта взять в качестве самого объекта. Значение k=-0.2 задает достаточно хорошее разделение объектов, если они представлены черным цветом, а значение k=+0.2, – если объекты представлены белым цветом.

Для реализации метода нужно взять какую-то окрестность вокруг точки, которую мы будем бинаризовать (т.е. последовательно вокруг каждой точки изображения). Ну например по 1 пикселю, тогда вопрос, 4х связную область нужно взять или 8ми связную?
0
Irushka
0 / 0 / 0
Регистрация: 18.10.2012
Сообщений: 4
18.10.2012, 23:35  [ТС] #5
дело в том,что нам не задавали окрестность..наверно 4х связную..я потерялась в этом задании
0
Sor
35 / 35 / 0
Регистрация: 24.11.2011
Сообщений: 309
19.10.2012, 00:18 #6
C++
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
35
36
37
int R;
int M;
int S;
int B;
float k;
 
int l;
int r;
int u;
int d;
 
k=0.2;
for (size_t x=1; x < Image1->Width; x++)
    {
     for (size_t y=1; y<Image1->Height; y++)
                {
                 R=GetRValue(Image1->Canvas->Pixels[x][y]);
 
 
                 l=GetRValue(Image1->Canvas->Pixels[x-1][y]);
                 r=GetRValue(Image1->Canvas->Pixels[x+1][y]);
                 d=GetRValue(Image1->Canvas->Pixels[x][y-1]);
                 u=GetRValue(Image1->Canvas->Pixels[x][y+1]);
 
                 M=l+r+u+d;
 
                 S=0,5*sqrt( pow((R-l),2)+pow((R-r),2)+pow((R-u),2)+pow((R-d),2) );
 
                 B=M+k*S;
 
                 if (R>B)
                 {
                   Image1->Canvas->Pixels[x][y]=(TColor) RGB(0,0,0);
                 }
                      
                }
    }
Что-то в таком духе, только тут останется рамка в 1 пиксель необработанная. сегодня на большее не способен)
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2012, 00:18
Привет! Вот еще темы с ответами:

Бинаризация - Delphi
В image есть изображение,(толщина символов которых явл. 1px) Как можно создать некий массив и в него занести все черные...

бинаризация - C++ Qt
Помогите, у меня почему - то не работает бинаризация, в чем ошибка не пойму? #include &quot;mainwindow.h&quot; #include &quot;ui_mainwindow.h&quot; ...

бинаризация картинки - C#
Подскажите, есть ли готовые ф-ии для работы с Graphics ?

Адаптивная бинаризация - Matlab
Пытаюсь провести сравнительный анализ различных методов бинаризации. Но я несильна (можно даже сказать, что совсем слабая в Матлабе)...


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
19.10.2012, 00:18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru