|
19.10.2011, 11:12
|
#1
|
Знающий
Регистрация: 26.11.2009
Сообщений: 313
Написано 35 полезных сообщений (для 95 пользователей)
|
openGL загрузить изображение и улучшить качество
В общем смысл таков: нужно на C++ builder 6 с помощью openGL загрузить изображение, а затем улучшить его качество или для начала хотя бы повысить яркость. Как я понял существуют определенные алгоритмы. Но я не представляю как это реализовать. Получается при загрузке картинки мне, вроде как, придется обратиться к каждому её пикселю и изменить его, или работать с Z буфером.
Может кто представляет как это сделать или имеет ссылки на какие либо статьи? Всем заранее благодарен.
__________________
StimuL
Maks
|
(Offline)
|
|
19.10.2011, 12:37
|
#2
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: openGL загрузить изображение и улучшить качество
Повысить яркость на 10 процентов в красном канале: прочитать цвет пикселя умножить его 1.1. Потом найти остаток от деления на 256 записать обратно.
Нечто напоминающее повышение контрастности изображения: считать цвет.
узнать (double) цветпикселя/(double)255. Возвести полученную величину в некоторую степень и умножить исходную часть цвета на эту величину.
Сблюрить можно обработав пиксели маской введенной вручную или посчитанной по формуле гаусовского блюра если хочется контроля и т.д.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.10.2011, 13:09
|
#3
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: openGL загрузить изображение и улучшить качество
Сообщение от dsd
Повысить яркость на 10 процентов в красном канале: прочитать цвет пикселя умножить его 1.1. Потом найти остаток от деления на 256 записать обратно.
|
(255.0 * 1.1) % 256 = 24.5
FFFFFFFUUUUUUUU
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.10.2011, 13:15
|
#4
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: openGL загрузить изображение и улучшить качество
Да ни в жисть не поверю что великий и могучий Сквид не догадаося что значения большие 255 надо сделать равными 255
|
(Offline)
|
|
19.10.2011, 13:25
|
#5
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: openGL загрузить изображение и улучшить качество
Я то догадался. А вот твоя фраза "Потом найти остаток от деления на 256 записать обратно." говорит о том, что ты не догадался. Или проводишь диверсионную деятельность.
__________________
|
(Offline)
|
|
19.10.2011, 13:57
|
#6
|
Знающий
Регистрация: 26.11.2009
Сообщений: 313
Написано 35 полезных сообщений (для 95 пользователей)
|
Ответ: openGL загрузить изображение и улучшить качество
Здесь все понятно. Но как все-таки к пикселю обратиться или перерисовать его??
__________________
StimuL
Maks
|
(Offline)
|
|
19.10.2011, 14:17
|
#7
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: openGL загрузить изображение и улучшить качество
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо dsd за это полезное сообщение:
|
|
19.10.2011, 14:40
|
#8
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: openGL загрузить изображение и улучшить качество
Сообщение от .Squid
Я то догадался. А вот твоя фраза "Потом найти остаток от деления на 256 записать обратно." говорит о том, что ты не догадался. Или проводишь диверсионную деятельность.
|
Каюсь. Косноязычен. :facepalm:
|
(Offline)
|
|
19.10.2011, 16:11
|
#9
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: openGL загрузить изображение и улучшить качество
если быть мужыком, то быстрее менять цвета пикселей шейдером.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.10.2011, 16:35
|
#10
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: openGL загрузить изображение и улучшить качество
Сообщение от Mr_F_
если быть мужыком, то быстрее менять цвета пикселей шейдером.
|
Да, добей чувака. OpenCL или CUDA еще предложи.
__________________
|
(Offline)
|
|
Эти 7 пользователя(ей) сказали Спасибо .Squid за это полезное сообщение:
|
|
20.10.2011, 17:41
|
#11
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: openGL загрузить изображение и улучшить качество
НУ CUDA ведь программируется на С,и SDK есть в открытом
|
(Offline)
|
|
25.10.2011, 00:53
|
#12
|
Знающий
Регистрация: 26.11.2009
Сообщений: 313
Написано 35 полезных сообщений (для 95 пользователей)
|
Ответ: openGL загрузить изображение и улучшить качество
Есть код загрузки картинки:
#include <windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glaux.h>
AUX_RGBImageRec* image;
void CALLBACK resize(int width,int height)
{
glViewport(0,0,width,height);
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glOrtho(-5,5, -5,5, 2,12);
gluLookAt( 0,0,5, 0,0,0, 0,1,0 );
glMatrixMode( GL_MODELVIEW );
}
void CALLBACK display(void)
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glRasterPos2d(-4.5,-3);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glPixelZoom(1.0, 1.0);
glDrawPixels(image->sizeX, image->sizeY,GL_RGB, GL_UNSIGNED_BYTE,image->data);
auxSwapBuffers();
}
void main()
{
float pos[4] = {3,3,3,1};
float dir[3] = {-1,-1,-1};
image = auxDIBImageLoad("igor.bmp");
glEnable(GL_ALPHA_TEST);
glEnable(GL_DEPTH_TEST);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glLightfv(GL_LIGHT0, GL_POSITION, pos);
glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, dir);
auxInitPosition( 50, 10, 400, 400);
auxInitDisplayMode( AUX_RGB | AUX_DEPTH | AUX_DOUBLE );
auxInitWindow( "Photo" );
auxIdleFunc(display);
auxReshapeFunc(resize);
auxMainLoop(display);
}
получаю ошибки:
[Linker Error] Unresolved external 'auxSwapBuffers' referenced from C:\USERS\KINGMAKS\DESKTOP\INDIVID\PHOTO.OBJ
[Linker Error] Unresolved external 'auxDIBImageLoadA' referenced from C:\USERS\KINGMAKS\DESKTOP\INDIVID\PHOTO.OBJ
[Linker Error] Unresolved external 'auxInitPosition' referenced from C:\USERS\KINGMAKS\DESKTOP\INDIVID\PHOTO.OBJ
[Linker Error] Unresolved external 'auxInitDisplayMode' referenced from C:\USERS\KINGMAKS\DESKTOP\INDIVID\PHOTO.OBJ
[Linker Error] Unresolved external 'auxInitWindowA' referenced from C:\USERS\KINGMAKS\DESKTOP\INDIVID\PHOTO.OBJ
[Linker Error] Unresolved external 'auxIdleFunc' referenced from C:\USERS\KINGMAKS\DESKTOP\INDIVID\PHOTO.OBJ
[Linker Error] Unresolved external 'auxReshapeFunc' referenced from C:\USERS\KINGMAKS\DESKTOP\INDIVID\PHOTO.OBJ
[Linker Error] Unresolved external 'auxMainLoop' referenced from C:\USERS\KINGMAKS\DESKTOP\INDIVID\PHOTO.OBJ
в чем проблема?
__________________
StimuL
Maks
|
(Offline)
|
|
25.10.2011, 01:15
|
#13
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: openGL загрузить изображение и улучшить качество
В том, что саму либу не подключил.
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
25.10.2011, 01:30
|
#14
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: openGL загрузить изображение и улучшить качество
Сообщение от .Squid
В том, что саму либу не подключил.
|
да-да: ошибка компоновки (линковки - Linker Error): наличествующий код успешно транслирован в объектные-файлы (модули), однако, компоновщик не нашёл модули библиотеки, чтобы собрать всё воедино.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
25.10.2011, 01:43
|
#15
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: openGL загрузить изображение и улучшить качество
#pragma comment(lib,"glaux.lib")
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:12.
|