d
27 ноября 2018 г. 4:40

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

c++, qt, image

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

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

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

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

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






2

Вам это нравится? Поделитесь в социальных сетях!

3
Docent
  • 27 ноября 2018 г. 5:58

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


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

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

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

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

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

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


    d
    • 27 ноября 2018 г. 6:19

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

      Docent
      • 27 ноября 2018 г. 14:23

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

        Комментарии

        Только авторизованные пользователи могут публиковать комментарии.
        Пожалуйста, авторизуйтесь или зарегистрируйтесь