d
26 ноября 2018 г. 17:40

Убрать помехи бинарное изображение

c++, qt, image

Превращаю изображение в бинарное(черно-белое):

image = image.convertToFormat(QImage::Format_Mono);

Получается вот такое изображение, с помехами:

А необходимо, что получилось примерно вот такое:

Как убрать помехи, желательно без сторонних библиотек? (opencv и т.п.)






Возврат 10% от суммы заказа отеля на Booking
Возврат 10% от суммы заказа отеля на Booking
Предлагаем ссылку с 10% возвратом от суммы заказа при бронировании отеля через Booking
3
  • 26 ноября 2018 г. 18:58

В матлабе есть следующие функции


rgb2gray - ну из названия понятно, смысл примерно следующий, для каждого пикселя ищем его ч/б интенсивнось

QRgb pix = MyFrame.pixel(X,Y)
R = ((double)((pix & 0x00ff0000) >> 16) * 0.2989);
G = ((double)((pix & 0x0000ff00) >> 8) * 0.5870);
B = ((double)(pix & 0x000000ff) * 0.114);
temp = (R + G + B);

там используются константы по интенсивности Rc=0.2989, Gc= 0.5870, Bc=0.114 вносимой при переводе RGB в Grayscale...

и еще одна функция - бинаризация изображения по уровню интенсивности im2bw (изобр, интенсивность), все что меньше черное, все что больше белое

делаем так же для каждого пикселя

if (temp >=value){
    binaryData[i][j] = 1;
}else {
    binaryData[i][j] = 0;
}
если есть другие готовые решения делитесь


1
d

А если изначально изображение в градациях серого?

0

Надо посмотреть что за формат пикселя в таком случае, но смысл не сильно изменится. Есть оригинальное изображение?

0

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
G
24 июля 2019 г. 4:20
G0tzef

C++ - Тест 005. Структуры и Классы

  • Результат:66баллов,
  • Очки рейтинга-1
VK
24 июля 2019 г. 3:49
Viktoriia Komarova

C++ - Тест 001. Первая программа и типы данных

  • Результат:40баллов,
  • Очки рейтинга-8
G
24 июля 2019 г. 3:25
G0tzef

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:80баллов,
  • Очки рейтинга4
Последние комментарии
23 июля 2019 г. 12:14
IscanderChe

Вот ссылка: https://github.com/iscander-che/TestReportViewer .
23 июля 2019 г. 5:42
Евгений Легоцкой

Хорошо, хотя конечно это С, а не С++ )))) Но если вдруг будут проблемы, то решение через класс со статическими переменными вы видели ))
23 июля 2019 г. 5:33
IscanderChe

"Не потребует каждый раз объявлять extern в других файлах". И так не требует. У меня в тестовом классе эти переменные используются без дополнительного объявления. Так же объявил их в cpp-файле о…
23 июля 2019 г. 5:28
IscanderChe

В репозиторий могу сегодня вечером выложить. "Или ее надо компилить самому под дистриб?" Тут я не совсем понимаю, что вы имеете ввиду. Я выложу в репозиторий исходный код утилиты, и всё.
23 июля 2019 г. 4:32
Евгений Легоцкой

Есть комментарий по вашему коду. Лучше бы вместо глобальных переменных в стиле Си, то есть с использоавнием extern, написали бы статические переменные в рамках класса. IMHO - это будет выглядеть…
Сейчас обсуждают на форуме
24 июля 2019 г. 4:57
Михаиллл

Это не помогает. Ниже мой код Rectangle{ //Flickable { //contentX: 100 id: rectangleForListView y: parent.height * 0.15 height: parent.height * 0.…
24 июля 2019 г. 3:17
Евгений Легоцкой

Ну вот теперь я несколько в ступоре. Запустите из консоли проект и посмотрите тогда, на что ругается. Также, следовало бы посмотреть в настройках самой виртуальной машины, что по поддержке OpenG…
23 июля 2019 г. 8:20
Михаиллл

Так работает QFile f1(dbAdress); f1.setPermissions(QFileDevice::WriteOther);
23 июля 2019 г. 7:11
Pavel K.

Советую использовать нечто такое или такое
22 июля 2019 г. 10:50
Pavel K.

Благодарю.Буду пробовать.
Ищу работу?
5,000.00 руб. - 15,000.00 руб.
Дизайнер
Moskovskiy, Moscow, Russia
25,000.00 руб. - 30,000.00 руб.
Разработчик Qt/C++
Barnaul, Altai Krai, Russia

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы

EVILEG
О нас
Услуги
Присоединяйтесь к нам
© EVILEG 2015-2019
Рекомендует хостинг TIMEWEB