Skip to content

Instantly share code, notes, and snippets.

View johnnyferreiradev's full-sized avatar

Johnny Ferreira johnnyferreiradev

View GitHub Profile
@johnnyferreiradev
johnnyferreiradev / convolucaoGenerica.cpp
Created March 16, 2019 12:46
Função para realizar uma convolução de forma genérica em uma imagem (OpenCV)
#include <opencv2/opencv.hpp>
Mat convoluirGenerica(Mat& img, float **masc, int M, int N){
float output=0;
Mat resp = img.clone();
int m=(M-1)/2;
int n=(N-1)/2;
for (int x=0; x<img.rows;x++){
@johnnyferreiradev
johnnyferreiradev / operadorRobert.cpp
Last active March 16, 2019 14:09
Operadores cruzados de Robert para processamento digital de imagens (Filtro 3x3)
Mat operadorRobert(Mat img){
Mat imgResultante = img.clone();
int gx,gy;
for (int i=0; i < img.rows; i++) {
for(int j=0; j < img.cols; j++){
gx = img.at<uchar>(i,j) - img.at<uchar>(i+1,j+1);
gy = img.at<uchar>(i+1,j) - img.at<uchar>(i,j+1);
imgResultante.at<uchar>(i,j) = sqrt(pow(gx,2) + pow(gy,2));
@johnnyferreiradev
johnnyferreiradev / operadorPrewitt.cpp
Created March 16, 2019 14:43
Operadores de Prewitt para processamento digital de imagens (Filtro 3x3)
Mat operadoresPrewitt(Mat img){
Mat imgResultante = img.clone();
int gx,gy;
for(int i=0; i< img.rows; i++){
for(int j=0; j < img.cols; j++){
gx = (img.at<uchar>(i-1,j+1) + img.at<uchar>(i,j+1) + img.at<uchar>(i+1,j+1)) -
(img.at<uchar>(i-1, j-1) + img.at<uchar>(i, j-1) + img.at<uchar>(i+1, j-1));
@johnnyferreiradev
johnnyferreiradev / operadorSabel.cpp
Created March 16, 2019 14:44
Operadores de Sabel para processamento digital de imagens (Filtro 3x3)
Mat operadoresSabel(Mat img){
Mat imgResultante = img.clone();
int gx,gy;
for(int i=0; i< img.rows; i++){
for(int j=0; j < img.cols; j++){
gx = (img.at<uchar>(i+1,j-1) + 2*(img.at<uchar>(i+1,j)) + img.at<uchar>(i+1,j+1)) -
(img.at<uchar>(i-1, j-1) + 2*(img.at<uchar>(i-1, j)) + img.at<uchar>(i-1, j+1));
@johnnyferreiradev
johnnyferreiradev / filtroLaplaciano.cpp
Created March 16, 2019 14:46
Filtro passa altas Laplaciano para processamento digital de imagens (Filtro 3x3). Este filtro depende de uma função de convolução genérica.
Mat filtroLaplaciano(Mat img){
float **Masc = (float **) malloc (3 *sizeof (float*));
for(int i=0; i<3; i++){
Masc[i] = (float *) malloc (3 *sizeof (float));
}
Masc[0][0] = 0; Masc[0][1] = -1; Masc[0][2] = 0;
Masc[1][0] = -1; Masc[1][1] = 4; Masc[1][2] = -1;
Masc[2][0] = 0; Masc[2][1] = -1; Masc[2][2] = 0;
@johnnyferreiradev
johnnyferreiradev / filtroGaussiano.cpp
Last active March 16, 2019 14:53
Funções responsáveis pela criação de um filtro gaussiano de dimensões dinâmicas para processamento digital de imagens. Seu funcionamento depende de uma função para convolução de forma genérica.
void criarGaussiano(float **mascara, int largura, int altura){
// adotando desvio padrão = 1,0
float sigma = 1.0;
float r, s = 2.0 * sigma * sigma;
// variável para somatório
float soma = 0.0;
// delimitadores para máscara simétrica com média em (0,0)
int m = (largura-1)/2;
@johnnyferreiradev
johnnyferreiradev / SistemaPDI_filtrosPassaAltas.cpp
Created March 16, 2019 17:15
Sistema de processamento de imagens digitais na aplicação de filtros passa alta (Laplaciano, Operadores de Robert, Prewitt e Sabel). O sistema compila 4 imagens. A duas dessas imagens são aplicados um filtro gaussiano para remoção de ruído. Foi utilizado a biblioteca OpenCV.
#include <iostream>
#include <opencv2/opencv.hpp>
#include <math.h>
using namespace cv;
using namespace std;
String dirSaida = "/home/johnny/Documentos/Sistemas de Informacao/S4/PDI/Projetos/PDI_Experimento_PassaAltas/Saidas/";
String imagensEntrada[] = {"/home/johnny/Documentos/Sistemas de Informacao/S4/PDI/Projetos/PDI_Experimento_PassaAltas/Entradas/crianca.jpg",
"/home/johnny/Documentos/Sistemas de Informacao/S4/PDI/Projetos/PDI_Experimento_PassaAltas/Entradas/lenna.jpg",
@johnnyferreiradev
johnnyferreiradev / servidorRotas_HTTP_URL_FS.js
Created March 21, 2019 13:18
Servidor de rotas com leitura e escrita de arquivos html usando http, url e fs (NodeJs)
const http = require('http')
const url = require('url')
const fs = require('fs')
const server = http.createServer(function(req, res){
var result = url.parse(req.url, true)
const lerArquivo = (caminho) => {
fs.readFile(__dirname + caminho, function(err, html){
res.writeHeader(200, {"Content-Type": "text/html"})
@johnnyferreiradev
johnnyferreiradev / FuncaoSeno.m
Created March 28, 2019 00:24
Função seno da frequencia x tempo
clear all
clc
f = 10; % Frequencia
w = 2*pi*f; % Frequencia angular
t = 0:0.001:1; % Tempo
y = sin(w*t) % Funcao
@johnnyferreiradev
johnnyferreiradev / ComparandoFrequencias.m
Last active March 28, 2019 00:36
Comparando duas fuções sen
clear all
clc
f1 = 10; % Frequencia
f2 = 5; % Frequencia
w1 = 2*pi*f1; % Frequencia angular
w2 = 2*pi*f2; % Frequencia angular
t = 0:0.001:1; % Tempo