Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 146

Неравномерное квантование яркости изображения

19.03.2018, 19:05. Показов 5581. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо написать программу по заданию
Неравномерного переквантования яркостей изображения из диапазона [0-(2N-1)] в диапазон [0-(2K-1)], где N определяется при анализе изображения, т.е. максимальная яркость <= 2N-1 , K задается пользователем в окне, 1<K<N=8.
я нашел в интернете с помощью метода равномерного квантования и это он нормально работает. Вот ниже мой код
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
        private void Form1_Load(object sender, EventArgs e)
        {
            //image1 = new Bitmap(@"c:\Users\mr_aleks\source\repos\Graphics\Graphics\images.bmp", true);
            Image img = Image.FromFile(@"c:\Users\mr_aleks\source\repos\Graphics\Graphics\arch.jpg");
            image1 = new Bitmap(img);
        }
        Bitmap image1;
        private void button2_Click(object sender, EventArgs e)
        {
            for (int x = 0; x < image1.Width; x++)
            {
                for (int y = 0; y < image1.Height; y++)
                {
                    Color c = image1.GetPixel(x, y);
                    int myRed = c.R, myGreen = c.G, myBlue = c.B;
 
                    int R = ((myRed / (255 / int.Parse(textBox1.Text))) * (255 / int.Parse(textBox1.Text)));
                    int G = ((myGreen / (255 / int.Parse(textBox1.Text))) * (255 / int.Parse(textBox1.Text)));
                    int B = ((myBlue / (255 / int.Parse(textBox1.Text))) * (255 / int.Parse(textBox1.Text)));
 
                    Color pixelColor = image1.GetPixel(x, y);
                    Color newColor = Color.FromArgb(R, G, B);
                    image1.SetPixel(x, y, newColor);
                    pictureBox3.Image = image1;
                }
            }
        }
Вводится количество уровней квантования с textBox1. Но мне нужно сделать неравномерно т.е. разного размера (как сказал препод). Как я понимаю это, уровни квантования все разного размера а не одинакового как в примере выше или как то так. Но как это сделать? Я лично не понимаю как это реализовать в плане алгоритма, в интернете я не нашел именно неравномерное квантование. Очень буду рад любой помощи.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.03.2018, 19:05
Ответы с готовыми решениями:

Определение уровня яркости пикселя ч/б изображения
Как определить яркость пикселя черно-белого изображения? Находил такой код(ниже), но объект Color представляет цвет ARGB. Возможно ли его...

Построение гистограммы общей яркости изображения
Здравствуйте. Подскажите, как построить гистограмму общей яркости изображения в элементе Chart из объекта Bitmap или двумерного массива...

Гистограмма яркости изображения после изменения контраста
Доброй ночи. Дело обстоит так, что после загрузки изображения в градации серого делал гистограмму его яркости. Все, вроде, хорошо. И даже...

16
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 146
22.03.2018, 01:22  [ТС]
Дорогие форумчане, очень нужна ваша помощь.
Препод немного рассказал, что нужно делать т.к. я вообще не понимал с чего начинать даже.
График построен на яркости пикселей. Прикрепил для наглядности.
Нужно сделать неравномерное квантование, но брать не с головы а придумать как лучше их поделить. Переменная К, вводится и может быть не больше 8, если я все правильно понял. После чего считаем диапазон квантования, с формулы. Если к=1, то 2^K-1, диапазон получается от 0 до 1 т.е. все пиксели будут нули.
Если к=2, 2^K-1 то диапазон получается от 0 до 3. Вот тут уже интересное, как лучше всего разделить неравномерно на 3 части? Один из вариантов предложили, это посчитать среднее арифметическое яркости, и отнять от максимальной яркости вот это среднее значение, получится квантование по двум уровням. Но нам нужно по трем, вообще эта формула выдает только нечетные цифры... Как сделать дальше? Вообще я не совсем понимаю, что делать с уровнями квантования. Если два уровня то к первому присваивается 0 а второму 1 и т.д. если их больше. Я так понимаю их нужно как то записать в пиксель и вывести? Получится изображение с уменьшенным количеством цветов?
Миниатюры
Неравномерное квантование яркости изображения   Неравномерное квантование яркости изображения  
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
22.03.2018, 03:37
mr_aleks,
Сделать неравномерное квантование само по себе несложно. Оно делается аналогично коду, который вы привели, только шаг квантования меняется. Только вот такое квантование будет довольно бессмысленным.
Если же вам нужно сделать его осмысленным, то нужно выбрать диапазоны квантования полагаясь на гистограмму цвета.
Это можно сделать разными способами, например:
  • Построить гистограмму по каждому каналу (R, G, B) и затем посчитать процентили. Например, если вам нужно разбить яркость на 4 части, то нужно взять процентили 25, 50, 75 и 100. Значения процентилей и будут уровнями квантования.
    Смысл такого типа квантования в том, что оно дает равное число пикселей в каждом кванте.
  • Другой вариант - сделать кластерный анализ пикселей в пространстве RGB (или отдельно в каждом канале). Если нужно 4 уровня квантования, то проводим кластерный анализ методом K-means , где K берем равным 4. В результате кластерного анализа все пиксели разбиваются на 4 группы, далее для каждого кластера считается среднее значение яркости и все пикселы кластера квантуются в это значение.
    Смысл данного квантования в том, что пикселы в каждом кванте будут иметь наименьшую дисперсию (иными словами в квант будут попадать только близкие по цвету пикселы).

Возможны и другие варианты. Из приведенных - первый самый простой.
1
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 146
22.03.2018, 09:13  [ТС]
Storm23, у меня такое задание. Как я уже написал, у меня не будет к четным числом и в вашем первом методе урони равномерные а мне так как раз не нужно. Да, я не совсем понимаю, что должно в итоге получится и как потом работать с уровнями квантования.
Я хочу просто выполнить задание
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
22.03.2018, 11:29
Цитата Сообщение от mr_aleks Посмотреть сообщение
Как я уже написал, у меня не будет к четным числом и в вашем первом методе урони равномерные а мне так как раз не нужно.
1) Во-первых, у вас число уровней квантования как раз всегда четное. У вас интервал от 0 до 2^k -1 и это всегда четное число уровней. Хотя число уровней и не важно совсем, у вас такие интервалы вероятно заданы просто для того, что бы цвет полностью влазил в k бит.
2) Во-вторых, и в первом и во втором методах - уровни НЕ равномерные. Откройте вики почитайте что такое процентиль, если вы на N-м курсе вашего распрекрасного вуза этого не знаете.

Я хочу просто выполнить задание
Для галочки? Ну тогда есть раздел фриланса, там вам "просто выполнят задание".
0
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 146
22.03.2018, 16:04  [ТС]
Цитата Сообщение от Storm23 Посмотреть сообщение
1) Во-первых, у вас число уровней квантования как раз всегда четное. У вас интервал от 0 до 2^k -1 и это всегда четное число уровней. Хотя число уровней и не важно совсем, у вас такие интервалы вероятно заданы просто для того, что бы цвет полностью влазил в k бит.
А не могли бы обьяснить почему получается четное число уровней если формула всегда выдает нечетное число?
Цитата Сообщение от Storm23 Посмотреть сообщение
2) Во-вторых, и в первом и во втором методах - уровни НЕ равномерные. Откройте вики почитайте что такое процентиль, если вы на N-м курсе вашего распрекрасного вуза этого не знаете.
Например, 25-я процентиль (также называемая квантилью .25 или нижней квартилью) переменной - это такое значение (xp), что 25% (p) значений переменной попадают ниже этого значения.
Верно? Как я это понял, берутся все значения яркости пикселей, выбираются те что меньше 25% от максимума, это будет первый уровень и по аналогии остальные уровни?

Добавлено через 3 минуты
Цитата Сообщение от Storm23 Посмотреть сообщение
Для галочки? Ну тогда есть раздел фриланса, там вам "просто выполнят задание".
я сам хочу сделать, но самым простым способом.
Цитата Сообщение от Storm23 Посмотреть сообщение
Построить гистограмму по каждому каналу (R, G, B) и затем посчитать процентили. Например, если вам нужно разбить яркость на 4 части, то нужно взять процентили 25, 50, 75 и 100. Значения процентилей и будут уровнями квантования.
Получается нужно квантовать каждый канал цвета отдельно?
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
22.03.2018, 17:03
Цитата Сообщение от mr_aleks Посмотреть сообщение
А не могли бы обьяснить почему получается четное число уровней если формула всегда выдает нечетное число?
Ох. Давайте как в детском садике - посчитаем на пальцах. Пусть k = 2, тогда у нас должны быть уровни от 0 до 2^2-1. То есть от 0 до 3. А это числа: 0,1,2,3. Сколько их штук? Четыре! Значит число уровней - четное.
Цитата Сообщение от mr_aleks Посмотреть сообщение
Верно? Как я это понял, берутся все значения яркости пикселей, выбираются те что меньше 25% от максимума, это будет первый уровень и по аналогии остальные уровни?
Верно. Только не от максимума. Этот метод не требует нахождения максимума, среднего и т.д. Вам нужно создать массив яркостей пикселов (в каждом канале) и отсортировать его по возрастанию. Затем, для того, что бы найти например 25-ю процентиль, вам нужно взять [n*0.25]-й член массива (где n- общее число элементов массива) и его значение и будет 25-й процентилью.
Получается нужно квантовать каждый канал цвета отдельно?
Первым методом - да. Этот метод требует сортировки множества, но цвет это вектор и он не поддерживает отношения порядка. Поэтому отсортировать цвета нельзя. А вот в каждом отдельном канале мы имеем дело с яркостью, которую отсортировать можно.
1
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 146
23.03.2018, 18:13  [ТС]
Цитата Сообщение от Storm23 Посмотреть сообщение
Ох. Давайте как в детском садике - посчитаем на пальцах. Пусть k = 2, тогда у нас должны быть уровни от 0 до 2^2-1. То есть от 0 до 3. А это числа: 0,1,2,3. Сколько их штук? Четыре! Значит число уровней - четное.
верно, не знаю, что на меня нашло .
Цитата Сообщение от Storm23 Посмотреть сообщение
Вам нужно создать массив яркостей пикселов (в каждом канале)
C#
1
2
3
4
5
6
7
8
9
10
11
12
            Image img = Image.FromFile(System.IO.Directory.GetParent(
                System.IO.Directory.GetCurrentDirectory()).Parent.FullName + @"\peppers_10x8.bmp");
            Bitmap image1 = new Bitmap(img);
            var arrR = new UInt32[image1.Height * image1.Width];
            for (int row = 0; row < image1.Height; row++)
            {
                for (int col = 0; col < image1.Width; col++)
                {
                    Color c = image1.GetPixel(col, row);
                    arrR[row + col] = c.R;
                }
            }
Не могу понять, почему не все значения копируются? Вообще это то? Сколько не гуглил вопрос получения яркости пикселя на c#, но ничего конкретного не нашел, кроме это формулы (0.2126*R + 0.7152*G + 0.0722*B).
Забегая в перед, какие действия нужно сделать после квантования и получения номеров уровней?
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
23.03.2018, 18:31
Цитата Сообщение от mr_aleks Посмотреть сообщение
Не могу понять, почему не все значения копируются?
Потому, что нельзя так считать индекс [row + col]
Цитата Сообщение от mr_aleks Посмотреть сообщение
Сколько не гуглил вопрос получения яркости пикселя на c#
Вам просто нужно брать компоненты цвета (для канала R нужно брать компонент R) - это будет яркость в каждом канале.
Забегая в перед, какие действия нужно сделать после квантования и получения номеров уровней?
Отправить их обратно в изображение.
0
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 146
24.03.2018, 05:38  [ТС]
Цитата Сообщение от Storm23 Посмотреть сообщение
Потому, что нельзя так считать индекс [row + col]
изменил на
C#
1
arrR[row * col] = c.R;
И в этом же двойном цикле оказывается выводилось нормально все значения, вот так :
C#
1
richTextBox1.Text += Environment.NewLine + arrR[row * col];
Но вот когда выводил этот же массив уже в другом цикле - выводилось непонятно что. Не пойму в чем дело.
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
24.03.2018, 10:17
Лучший ответ Сообщение было отмечено mr_aleks как решение

Решение

Цитата Сообщение от mr_aleks Посмотреть сообщение
arrR[row * col] = c.R;
Это тоже неправильно.

Цитата Сообщение от mr_aleks Посмотреть сообщение
Нужно сделать неравномерное квантование
Для начала сделаем два метода, один - будет извлекать пикселы изображения в массивы каналов, а второй - наоборот отправлять массивы каналов обратно в изображение:

Кликните здесь для просмотра всего текста
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
        void BitmapToChannels(Bitmap bmp, out byte[] R, out byte[] G, out byte[] B)
        {
            var w = bmp.Width;
            var h = bmp.Height;
            R = new byte[w * h];
            G = new byte[w * h];
            B = new byte[w * h];
 
            for (int y = 0; y < h; y++)
            for (int x = 0; x < w; x++)
            {
                Color c = bmp.GetPixel(x, y);
                var i = x + y * w;
                R[i] = c.R;
                G[i] = c.G;
                B[i] = c.B;
            }
        }
 
        void ChannelsToBitmap(Bitmap bmp, byte[] R, byte[] G, byte[] B)
        {
            var w = bmp.Width;
            var h = bmp.Height;
 
            for (int y = 0; y < h; y++)
            for (int x = 0; x < w; x++)
            {
                var i = x + y * w;
                bmp.SetPixel(x, y, Color.FromArgb(R[i], G[i], B[i]));
            }
        }


Далее, реализуем неравномерное квантование методом процентилей:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        void UnevenQuantification(byte[] pixels, int levelCount)
        {
            //make clone of array
            var clone = (byte[])pixels.Clone();
            //sort it
            Array.Sort(clone);
            //find percentiles
            var levels = new byte[levelCount];
            for (int i = 0; i < levelCount; i++)
                levels[i] = clone[i * clone.Length / levelCount];
            //perform quantification
            for (int i = 0; i < pixels.Length; i++)
            for (int j = levelCount - 1; j >= 0; j--)
            if (pixels[i] >= levels[j])
            {
                pixels[i] = levels[j];
                break;
            }
        }
И заодно и простое равномерное квантование:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
        void RegularQuantification(byte[] pixels, int levelCount)
        {
            var m = 255 / levelCount;
            //perform quantification
            for (int i = 0; i < pixels.Length; i++)
                pixels[i] = (byte) ((pixels[i] / m) * m);
        }


Далее, объединим все вместе:
Кликните здесь для просмотра всего текста
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
        private void btStart_Click(object sender, EventArgs e)
        {
            //load image
            var bmp = new Bitmap(new WebClient().OpenRead("https://digitalpadm.com/wp-content/uploads/2017/07/org.png"));
 
            //show source image
            pb1.Image = (Bitmap)bmp.Clone();
 
            //get channels
            byte[] R, G, B;
            BitmapToChannels(bmp, out R, out G, out B);
 
            //get level count
            var k = int.Parse(tbK.Text);
            var levelCount = (int)Math.Pow(2, k);
 
            //method
            var method = cbMethod.SelectedIndex;
 
            if (method == 0)
            {
                //make uneven quantification
                UnevenQuantification(R, levelCount);
                UnevenQuantification(G, levelCount);
                UnevenQuantification(B, levelCount);
            }
 
            if (method == 1)
            {
                //make regular quantification
                RegularQuantification(R, levelCount);
                RegularQuantification(G, levelCount);
                RegularQuantification(B, levelCount);
            }
 
            //set channels to image
            ChannelsToBitmap(bmp, R, G, B);
 
            //show quantificated image
            pb2.Image = bmp;
        }


Получаем следующие результаты.

Пример неравномерного квантования для k=3 (3 бита на канал, 8 уровней квантования):

Неравномерное квантование предложенным способом:


Равномерное квантование:


Пример неравномерного квантования для k=2 (2 бита на канал, 4 уровней квантования):

Неравномерное квантование предложенным способом:


Равномерное квантование:


Видно, что неравномерное квантование дает лучший визуальный эффект, чем равномерное. Причем, чем меньше k, тем больше разница между равномерным и неравномерным квантованием.

Проект целиком: WindowsFormsApplication380.zip
2
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 146
25.03.2018, 03:20  [ТС]
Storm23, спасибо вам огромное, разбираюсь в коде.
Не могли бы прокомментировать как находится в данном случае процентиль ? По строке кода ниже.
Цитата Сообщение от Storm23 Посмотреть сообщение
C#
1
levels[i] = clone[i * clone.Length / levelCount]
После этого, не совсем понимаю сам алгоритм квантования.
Мы берем какие то значение яркости цвета по подсчитанному индексу (получается это значение максимальное и последнее на уровне) из сортированного массива яркостей и заносим их по порядку в новый массив из 8 элементов (если к=3)? После чего сравниваем, если изначальная якрость больше или ровна значению из этого нового массива (почему он перебирается с конца) то присваиваем новое значение из нового массива.
Можете объяснить данные алгоритмы, почему именно так они выполняются?
0
8 / 8 / 10
Регистрация: 16.10.2012
Сообщений: 523
28.02.2019, 22:50
Storm23, а куда в вашем методе квантования делось N, которое определяется по исходному изображению?

Цитата Сообщение от Storm23 Посмотреть сообщение
Ох. Давайте как в детском садике - посчитаем на пальцах. Пусть k = 2, тогда у нас должны быть уровни от 0 до 2^2-1. То есть от 0 до 3. А это числа: 0,1,2,3. Сколько их штук? Четыре! Значит число уровней - четное.
Почему у вас форму 2^K-1, когда формула [0-(2^K-1)], и при прогоне вашего алгоритма получаются отрицательные числа:
-1, -3, -7, -15, -31, -65, -127, -256. При котором алгоритм ломается! Как бы вставить в формулу Math.Abs() можно и всё заработает.

Можете расписать данный алгоритм, чтобы он работал именно в промежутке от [0-(2^N-1)] до [0-(2^K-1)] ??? И как расчитать собственно само N по исходному изображению?
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
01.03.2019, 02:17
Цитата Сообщение от Darkvoid Посмотреть сообщение
Почему у вас форму 2^K-1, когда формула [0-(2^K-1)], и при прогоне вашего алгоритма получаются отрицательные числа:
-1, -3, -7, -15, -31, -65, -127, -256. При котором алгоритм ломается! Как бы вставить в формулу Math.Abs() можно и всё заработает.
Я не знаю о каких отрицательных числах вы говорите. Там их нет. А [0-(2^K-1)] обозначает не "ноль минус (2^K-1)", а "диапазон от нуля до (2^K-1)".

Цитата Сообщение от Darkvoid Посмотреть сообщение
Можете расписать данный алгоритм, чтобы он работал именно в промежутке от [0-(2^N-1)] до
[0-(2^K-1)] ???
Оно так и работает.

Цитата Сообщение от Darkvoid Посмотреть сообщение
И как расчитать собственно само N по исходному изображению?
Ну во первых N обычно равно 8. Потому что это просто число бит на канал.
Во-вторых, в моем методе конечно N можно найти. Но в этом нет необходимости, потому что у меня используются процентили. N соответствует логарифму из числа, на котором достигается 100-я процентиль.
0
8 / 8 / 10
Регистрация: 16.10.2012
Сообщений: 523
01.03.2019, 08:47
Цитата Сообщение от Storm23 Посмотреть сообщение
Ну во первых N обычно равно 8. Потому что это просто число бит на канал.
Во-вторых, в моем методе конечно N можно найти. Но в этом нет необходимости, потому что у меня используются процентили. N соответствует логарифму из числа, на котором достигается 100-я процентиль.
Я понимаю, что нет необходимости расчёта N, но всё таки, можете его рассчитать и внести в формулу, потому что нужно именно промежутком от [2^N - 1;2^K-1] с расчётом N, а то Я не очень понимаю, как выбирать число в промежуток от [2^N - 1;2^K-1] и как по коду внести N так, чтобы явно можно было ткнуть пальцом, мол вот N !!!???
0
8 / 8 / 10
Регистрация: 16.10.2012
Сообщений: 523
01.03.2019, 08:48
Цитата Сообщение от Storm23 Посмотреть сообщение
Оно так и работает.
Т.е. если Я хочу промежуток от [2^N - 1;2^K-1], то нужно 0 заменить на 2^N - 1 ?
0
8 / 8 / 10
Регистрация: 16.10.2012
Сообщений: 523
01.03.2019, 08:53
Вот тоже самое задание, просто нужна привязка к формуле, где есть N...
Миниатюры
Неравномерное квантование яркости изображения  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.03.2019, 08:53
Помогаю со студенческими работами здесь

Совмещение яркости, контраста и прозрачности изображения в PictureBox
Добрый вечер! В общем, в ходе работы над PictureBox и его Image столкнулся с проблемой в изменении его контраста и прозрачности. Вот мой...

Изменение яркости/контраста изображения телевизионным алгоритмом
Добрый вечер, друзья! Столкнулся с проблемой реализации данного алгоритма. Изменение с RGB алгоритмом сделал, а к этому не могу перейти,...

Изменение яркости изображения, не проходя циклом по каждому пикселю
Здравствуйте. Не нашёл другого способа изменения яркости изображения, кроме обработки каждого пикселя в цикле. Работает это очень...

Изменение яркости изображения trackBar'ом
Есть pictureBox в который загружается изображение: OpenFileDialog dialog = new OpenFileDialog(); if (dialog.ShowDialog() ==...

Построить гистограмму яркости и пользуясь этой гистограммой редактировать яркость изображения
Построить гистограмму яркости и пользуясь этой гистограммой редактировать яркость изображения.Собственно,есть идеи как можно реализовать? ...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 23.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru