Código de visão computacinal através da implementação do cálculo de Browness do Aimonino para detecção de tons de marron de uma imagem através da aplicação pixel a pixel.
Processo | Teorico | Hibrido | Absoluto |
---|---|---|---|
K = 0 | ![]() |
![]() |
![]() |
Implementação dos filtros para detecção
É feito o cálculo de cor K*R - G - B
em todos o s píxel da imagem a fim de encontrar o píxel de maior intensidade
Uma aplicação de detecção de marrom.
Clique aqui para ver implementação
List<int> intensidadeMaxMin(Image src, int k){
var max = 0;
var min = 10000;
var result = 0;
var r = 0, g = 0, b = 0;
final p = src.getBytes();
for (var i = 0, len = p.length; i < len; i += 4) {
// Carregando os RGB
r = p[i];
g = p[i + 1];
b = p[i + 2];
// Calculando função
result = (k * r - g - b);
//Salvando Máximo e Mínimos
max = (max > result) ? max : result;
min = (min < result) ? min : result;
}
return [min,max];
}
Normalização Teórica usa a itensidade máxima(r2) e mínima(r1) pra gerar o destribuir os valores de cada Píxel dentro de um panorama que uma tela é capaz de reproduzir.
Clique aqui para ver implementação
int normalizacaoTeorica(int p, int r1, int r2){
var normalizado = 0;
p < 0 ? print("P = $p < 0"): '';
normalizado = (((p - r1)/(r2 - r1))*(255 - 0)).toInt();
return normalizado;
}
O Híbrido é feito com o mesmo princípio da Normalização Teórica, porém ele utiliza o valor absoluto dos resultados da função.
Clique aqui para ver implementação
int normalizacaoHibrida(int p, int r1, int r2){
var normalizado = 0;
normalizado = (((p.abs() - r1)/(r2 - r1))*(255 - 0)).toInt();
return normalizado;
}
É a normalização mais simplista, onde carrega o valor do resultado da função, e caso seja menor que 0 ou maior que 255, ele altera o resultado pra um desses valores.
Clique aqui para ver implementação
int normalizacaoAbsoluta(int result){
var abs = result.abs();
result = abs >= 255 ? 255 : abs;
return result;
}