как оценить яркий канал для цветного изображения в Matlab?

как предварительно оценить яркий канал для цветного изображения (преобразовать изображение пространственной области в область яркости) по следующей формуле: введите здесь описание изображения Кто-нибудь знает, как это сделать в Matlab??


person Ghada Sandoub    schedule 11.03.2019    source источник


Ответы (2)


Нужно знать больше о том, что такое Omega(x), но я предполагаю, что это локальное окно. Код, подобный приведенному ниже, является началом (замените 1:2 и 4:6 своим окном):

[bright, bright_channel_idx] = max( image(1:2,4:6,:), [], 3 ); % take the max along the 3rd dimension, color

person Suhas C    schedule 12.03.2019
comment
это форма оценки яркого канала. где Ic — цветовой канал I, а Ω(x) — локальное пятно с центром в точке x. y — пиксель локального пути Ω(x). яркий канал является результатом двух максимальных операторов. Оператор max c∈{r,g,b}» выполняется над каждым пикселем для трех каналов. Оператор «max y∈Ω(x)» является максимальным фильтром. размер локального патча для обеих операций был установлен как 15 × 15. Итак, я спросил, как это сделать в Matlab? - person Ghada Sandoub; 12.03.2019

Вот блок кода для начала. Вы можете использовать два цикла for, чтобы пройти по строкам (r) и столбцам (c). Должны быть более быстрые способы сделать это, но этого достаточно, чтобы вы начали. Еще один совет: будьте осторожны, когда ваши циклы for приближаются к концу строк и/или столбцов.

      block_r = img( r:r+kernel_h, c:c+kernel_w, 1 ); % get a region
      block_g = img( r:r+kernel_h, c:c+kernel_w, 2 );
      block_b = img( r:r+kernel_h, c:c+kernel_w, 3 );

      max_r = max( block_r(:) ); % max within each region
      max_g = max( block_g(:) );
      max_b = max( block_b(:) );

      bright_img(r,c) = max( [max_r,max_g,max_b] ); % max across all channels
person Suhas C    schedule 13.03.2019