|
|
|
VB : Anti-Aliassing при развороте bitmap
|
|||
|---|---|---|---|
|
#18+
Сделал программу,разворачивает картинку на градусы. При развороте, качество изображения снижается,но оно востанавливается путем Anti-Aliassing' га. Как мне сделать Anti-Aliassing (Сглаживание) при развороте изображения? Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 12:27 |
|
||
|
VB : Anti-Aliassing при развороте bitmap
|
|||
|---|---|---|---|
|
#18+
P.R.O.M.A.R.K, "восстанавливается путём anti-aliasing'а"? Как восстановить потерянную информацию? И зачем, если можно более аккуратно делать само преобразование? Ладно, брюзжу. ;-) На vbAccelerator ссылки тебе давали уже неоднократно. Там есть и нужный тебе пример , использующий GDI+. Есть и другие примеры (ищи по имени функции GdipRotateWorldTransform, например). Есть также интересная библиотека, AGG, Anti-Grain Geometry , но пока у меня не дошли до неё руки. Если у тебя вдруг дойдут, поделись, пожалуйста, результатом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 15:37 |
|
||
|
VB : Anti-Aliassing при развороте bitmap
|
|||
|---|---|---|---|
|
#18+
Бенедикт,спасибо за ссылку,но это не совсем то... Вот например: Код: plaintext 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. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. Глянь участок кода: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 11:23 |
|
||
|
VB : Anti-Aliassing при развороте bitmap
|
|||
|---|---|---|---|
|
#18+
P.R.O.M.A.R.K, мама... Это не ужас. Это ужас-ужас-ужас. Признайся - это просто желание такое - всё сделать самому, не обращая внимания на всякие там GDI, GDI+, DirectX, OpenGL, AGG? Хорошо, вот тебе anti-aliasing при повороте "на пальцах". Возьми или представь прозрачную плёнку. Нарисуй на ней координатные оси и координатную сетку. Каждая клетка (квадратик) сетки - это пиксель исходного изображения. Теперь возьми вторую такую плёнку, или просто листок в клеточку. Это будет результирующее изображение, со своими пикселями-квадратиками. Наложи с поворотом (и возможным смещением) первое на второе. Как видишь, каждый пиксель исходного изображения наложился на несколько пикселей результирующего (в общем случае). Если рассматривать с другой стороны, на пиксель результирующего изображения наложилось, например, 4 пикселя цветов c1, с2, с3, с4 исходного, и каждый покрыл какую-то часть d1, d2, d3, d4 его площади. d1+d2+d3+d4=1. Следовательно, цвет результирующего пикселя должен вычисляться как C = (c1*d1+c2*d2+c3*d3+c4*d4) / (d1+d2+d3+d4) = c1*d1+c2*d2+c3*d3+c4*d4. Поскольку цвет - трёхкомпонентный RGB, это вычисление надо делать для каждой компоненты. Ну что, сможешь реализовать такой метод? В реальности им в такой редакции вряд ли кто-то пользуется, но некая упрощённая модификация, насколько мне известно, в ходу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 15:41 |
|
||
|
VB : Anti-Aliassing при развороте bitmap
|
|||
|---|---|---|---|
|
#18+
БенедиктP.R.O.M.A.R.K, мама... Это не ужас. Это ужас-ужас-ужас. Признайся - это просто желание такое - всё сделать самому, не обращая внимания на всякие там GDI, GDI+, DirectX, OpenGL, AGG? Хорошо, вот тебе anti-aliasing при повороте "на пальцах". Возьми или представь прозрачную плёнку. Нарисуй на ней координатные оси и координатную сетку. Каждая клетка (квадратик) сетки - это пиксель исходного изображения. Теперь возьми вторую такую плёнку, или просто листок в клеточку. Это будет результирующее изображение, со своими пикселями-квадратиками. Наложи с поворотом (и возможным смещением) первое на второе. Как видишь, каждый пиксель исходного изображения наложился на несколько пикселей результирующего (в общем случае). Если рассматривать с другой стороны, на пиксель результирующего изображения наложилось, например, 4 пикселя цветов c1, с2, с3, с4 исходного, и каждый покрыл какую-то часть d1, d2, d3, d4 его площади. d1+d2+d3+d4=1. Следовательно, цвет результирующего пикселя должен вычисляться как C = (c1*d1+c2*d2+c3*d3+c4*d4) / (d1+d2+d3+d4) = c1*d1+c2*d2+c3*d3+c4*d4. Поскольку цвет - трёхкомпонентный RGB, это вычисление надо делать для каждой компоненты. Ну что, сможешь реализовать такой метод? В реальности им в такой редакции вряд ли кто-то пользуется, но некая упрощённая модификация, насколько мне известно, в ходу. Очень интересно... Бенедикт,спасибо. У тебя есть упрошенный алгоритм? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2007, 09:42 |
|
||
|
VB : Anti-Aliassing при развороте bitmap
|
|||
|---|---|---|---|
|
#18+
Бенедикт... 4 пикселя цветов c1, с2, с3, с4 исходного, и каждый покрыл какую-то часть d1, d2, d3, d4 его площади. d1+d2+d3+d4=1... Бенедикт,мне не совсем понятно "d1+d2+d3+d4=1",поянсни пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2007, 16:06 |
|
||
|
VB : Anti-Aliassing при развороте bitmap
|
|||
|---|---|---|---|
|
#18+
P.R.O.M.A.R.K, сейчас попутаюсь ответить на второй вопрос. В силу отсутствия педагогических навыков, рисунком. За единицу принимается площадь пикселя изображения-результата. Его не обязательно покрывают 4 пикселя исходного изображения, это я взял для примера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2007, 02:23 |
|
||
|
VB : Anti-Aliassing при развороте bitmap
|
|||
|---|---|---|---|
|
#18+
P.R.O.M.A.R.K, "попутаюсь" ...А теперь на первый. Один из упрощённых алгоритмов таков, что 1) вычисляется обратное преобразование (из системы координат результирующего изображения в систему координат исходного); 2) пиксель результирующего изображения разбивается на несколько субпикселей (например, 2*2, 4*4, или 8*8); 3) берётся точка (обычно центр) субпикселя, и применяется обратное преобразование (см. пункт 1)); 4) если точка попала в какой-то пиксель исходного изображения, цвет субпикселя принимается равным цвету этого пикселя исходного изображения; если не попала (вышли за пределы рисунка), то цвету фона; 5) цвет пикселя результирующего изображения принимается равным среднему цвету его субпикселей (по каждой цветовой компоненте). Для примерных результатов см. рисунок. Применялся GDI (не GDI+) в ОС с ядром NT. Какой метод использует Photoshop, я не знаю. Рассматривать под микроскопом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2007, 02:26 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=34957557&tid=2162995]: |
0ms |
get settings: |
12ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
107ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 238ms |
| total: | 472ms |

| 0 / 0 |
