Inversor de Região - Negativo 🔄
Um algoritmo simples de processamento de imagem foi desenvolvido para inverter os valores dos pixels dentro de uma região especificada de uma imagem em tons de cinza. Este programa permite que os usuários selecionem uma região especificando dois pontos ($P_{1}$ e $P_{2}$) e então inverte os valores dos pixels dentro dessa região.
Considerando a imagem utilizada em uma representação monocromática, onde temos apenas a intensidade de cada pixel variando entre 0 e 255, precisamos apenas inverter literalmente essa intensidade para que o negativo da imagem apareça. Ou seja, um determinado pixel $ p[i][j] $ será agora representado pelo seu valor complementar a 255, então $ p[i][j] = 255 - p[i][j] $. Analogamente, podemos fazer isso no OpenCV da seguinte forma:
1
image.at<uchar>(row, col) = 255 - image.at<uchar>(row, col);
Em um determinado loop de linhas e colunas na matriz de pixels da imagem, acessamos cada pixel e alteramos seu valor como sendo o complementar a 255. No fim, teremos a imagem na região aplicada essa lógica, invertida.
Para verificar o código correspondente, acesse: Github.com/ErnaneJ/pdi/negative
Execução 🚀
1
make main && ./main
Para usar uma imagem diferente de “biel.png”, altere a linha 4 correspondente à macro IMAGE_FILE.
Saída 🖼️
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
🔄 Negative Region Inverter - [biel.png] 🔄
──────────────────────────────────────────────
🚨 Enter the coordinates for two points (P1 and P2).
📍 Enter the P1x: 100
📍 Enter the P1y: 100
✅ P1x and P1y are valid.
📍 Enter the P2x: 200
📍 Enter the P2y: 200
✅ P2x and P2y are valid.
✅ P1 and P2 are valid.
🚨 The region to be inverted is from P1(200, 200) to P2(250, 250).
✅ Region inverted successfully!
──────────────────────────────────────────────
🎓 Sudent: Ernane Ferreira - DCA0445
Os pontos utilizados para construir a região negativa na imagem mais à direita foram $ P_{1} = (x, y) = (100, 100) $ e $ P_{2} = (x, y) = (200, 200) $.