Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> OpenGL(GLUT) приминение фильтров к изображению 
:(
    Опции темы
bigbuka
Дата 10.9.2010, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 1.10.2009

Репутация: нет
Всего: нет



Добрый день уважаемые..такая проблема..необходимо написать программу котрая применяет фильтр повышения резкости к изображению
нашол алгоритм вроди реализовал все как написанно а вылаяют как узнал артефакты на изображении как это можно  исправить?

вот функция повышения резкости 
Код

typedef struct _IMAGE
  {
  int width;
  int height;
  unsigned char* data; - грузиться из BMP файла
  } IMAGE;

void Sharpness(IMAGE *in, IMAGE *out,int level)
{
#define sharp_w 3
#define sharp_h 3    

    long long sumr=0;
    long long sumg=0;
    long long sumb=0;
        
    int sharpen_filter[sharp_w][sharp_h]={{-1,-2,-1},{-2,22,-1},{-1,-2,-1}};//матрица фильтра
    int sharp_sum=10;
 for (int j=0;j<in->width;j++)
    for (int i=0;i<in->height;i++)
        
    {
        for(int k=0;k<sharp_w;k++){
          for(int l=0;l<sharp_h;l++)
        {
         int posY=i+(l-((sharp_w-1)>>1)); // - позиции пикселей которые необходимо просмотреть
         int posX=j+(k-((sharp_h-1)>>1));
        if (posX>=0 && posX<=in->width && posY>=0 && posY<=in->height)
                {
                    int r=in->data[3*(posY*in->width+posX)];
                    int g=in->data[3*(posY*in->width+posX)+1];
                    int b=in->data[3*(posY*in->width+posX)+2];
                    sumr+=r*sharpen_filter[k][l];
                    sumg+=g*sharpen_filter[k][l];
                    sumb+=b*sharpen_filter[k][l];
                }
          }
    }

        sumr/=sharp_sum;
        sumb/=sharp_sum;
        sumg/=sharp_sum;
 
    out->data[j*3+i*3*in->width  ]=sumr;   //запись в выходное изображение
    out->data[j*3+i*3*in->width+1]=sumg;
    out->data[j*3+i*3*in->width+2]=sumb;
  }
}

вот результат работы 
Скрытый текст

user posted image

подскажите что я нетак делаю...

Это сообщение отредактировал(а) bigbuka - 10.9.2010, 18:44
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0488 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.