С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Dimon16
14 / 14 / 1
Регистрация: 09.06.2010
Сообщений: 35
#1

Матрица скручивания - C++

23.03.2011, 19:03. Просмотров 707. Ответов 0
Метки нет (Все метки)

Вот написал код для матрицы скручивания,но он чего-то работает не для всех фильтров :
C++
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
#pragma once
 
#include "Image.h"
#include "MathHelper.h"
 
 
typedef struct Matrix_3x3
{
    int Mat[3][3];
    int Divisor;
    int Offset;
};
 
void Process_Convolution3x3(IMG * Pic, Matrix_3x3 M)
{
        int TR, TG, TB;
        int R, G, B;
 
        UINT IDX;
 
        for(int Y = 1;Y < Pic -> Height - 1;Y++)
        {
            for(int X = 1;X < Pic -> Width - 1;X++)
            {
                //Обрабатываем квадрат заданый матрицой
                for(int Row = -1;Row < 2;Row++)
                {
                    for(int Item = -1;Item < 2;Item++)
                    {
                        IDX = (((Y + Row) * Pic -> Width) + (X + Item)) * Pic -> BytesPerPixel;
 
                        TR = *(Pic -> Data + IDX + Pic -> R_IDX);
                        TG = *(Pic -> Data + IDX + Pic -> G_IDX);
                        TB = *(Pic -> Data + IDX + Pic -> B_IDX);
 
                        TR *= M.Mat[Item + 1][Row + 1];
                        TG *= M.Mat[Item + 1][Row + 1];
                        TB *= M.Mat[Item + 1][Row + 1];
 
                        R += TR;
                        G += TG;
                        B += TB;
                    }
                }
 
                IDX = (Y * Pic -> Width + X) * Pic -> BytesPerPixel;
 
                R = (R / M.Divisor) + M.Offset;
                G = (G / M.Divisor) + M.Offset;
                B = (B / M.Divisor) + M.Offset;
 
                *(Pic -> Data + IDX + Pic -> R_IDX) = Clamp(R, 0, 255);
                *(Pic -> Data + IDX + Pic -> G_IDX) = Clamp(G, 0, 255);
                *(Pic -> Data + IDX + Pic -> B_IDX) = Clamp(B, 0, 255);
 
                R = 0;
                G = 0;
                B = 0;
            }
        }
}
Объясните пожалуйста в чем тут ошибка?
Работает только для Blur'a и Negativ'a.
Заранее спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2011, 19:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Матрица скручивания (C++):

дана квадратичная матрица z[n][n]. составить программу, которая если матрица симметричная(транспонированная матрица равна исходной), сделает ее не сим - C++
помогите пожалуйста. условие: дана квадратичная матрица z. составить программу, которая если матрица симметричная(транспонированная...

Дана матрица целых чисел, из n строк и n столбцов (n < = 100).Определить является ли матрица нулевой (состоит из одних нулей) - C++
#include &lt;iostream.h&gt; #include &lt;iomanip.h&gt; #include&lt;conio.h&gt; void main() { int mas; int N; int max_element; int...

Дана матрица целых чисел, из n строк и n столбцов (n < = 100).Определить является ли матрица нулевой (состоит из одних нулей) - C++
#include &lt;iostream.h&gt; #include &lt;iomanip.h&gt; #include &lt;stdlib.h&gt; int main(int argc, char* argv) { srand(time(NULL)); int mas; ...

Даны квадратная матрица A порядка n и вектор с n элементами. Получить вектор: (A=E)b, где E единичная матрица порядка n - C++
Даны квадратная матрица A порядка n и вектор с n элементами. Получить вектор: (A=E)b, где E-единичная матрица порядка n. Помогите...

Определить базовый класс "Матрица" и класс-потомок "Треугольная матрица" - C++
Нужно определить класс &quot;матрица&quot; с возможностью динамического выделения и освобождения памяти, наполнения матрицы, сохранения и чтения из...

Дана квадратная матрица А порядка n. Проверьте, является ли матрица единичной - Delphi
Дана квадратная матрица А порядка n. Проверьте, является ли матрица единичной. Описать с помощью функций и процедур. Ввод-вывод в текстовый...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2011, 19:03
Привет! Вот еще темы с ответами:

Дана квадратная матрица А порядка n. Проверить, является ли матрица единичной. - Turbo Pascal
Ребят,помогите решить задачу &quot;Дана квадратная матрица А порядка n. Проверить, является ли матрица единичной&quot;

Как доказать то, что матрица и транспонированная ей матрица имеют одинаковые собственные числа? - Алгебра
Как доказать то, что матрица и транспонированная ей матрица имеют одинаковые собственные числа с одинаковой кратностью? Добавлено...

Матрица:Даны натуральное число n, действительная матрица размера n х 9. Найти среднее арифметическое: каждого - QBasic
Даны натуральное число n, действительная матрица размера n х 9. Найти среднее арифметическое: каждого из столбцов.

Непонятки с DirectX (матрица поворота, камера, матрица проекции) - DirectX
Возник вопрос по DirectX, точнее по матрицам Вопрос 1: D3DXMATRIXA16 matWorld; UINT iTime = timeGetTime() % 10000; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.