[Visión por computadora] tarea más conocimiento de red-2

Escribir en frente

Los siguientes códigos son todos extractos en línea, si necesito el código completo, ¡privado!

hw1

hw1:
1.
Cambiar el tamaño de la imagen Cambie primero el tamaño de la memoria de la imagen, por ejemplo:
Inserte la descripción de la imagen aquí
de X: 4 * 4 a Y: 7 * 7

Calcule la relación de transformación de coordenadas entre dos puntos:
aX + b = Y, encuentre a = 4/7, b = -3/14

Método de interpolación:

1) El método del elemento vecino más cercano
es asignar el nivel de gris del píxel vecino más cercano al píxel que se determinará al píxel a determinar.
Inserte la descripción de la imagen aquí
2) interpolación triangular

Q = V1 A1 + V2 A2 + V3 * A3
Inserte la descripción de la imagen aquí
3) Método de interpolación de dos líneas

Inserte la descripción de la imagen aquí
Recorra los píxeles y regrese a las coordenadas antiguas.
Use la interpolación del vecino más cercano para llenar la imagen.

2.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Encuentre una explicación de imágenes en movimiento en CSDN:
Inserte la descripción de la imagen aquí
el código en Internet (c ++)

//******************高斯卷积核生成函数*************************
void GetGaussianKernel(double **gaus, const int size,const double sigma)
{
    const double PI=4.0*atan(1.0); //圆周率π赋值
    int center=size/2;
    double sum=0;
    for(int i=0;i<size;i++)
    {
        for(int j=0;j<size;j++)
        {
            gaus[i][j]=(1/(2*PI*sigma*sigma))*exp(-((i-center)*(i-center)+(j-center)*(j-center))/(2*sigma*sigma));
            sum+=gaus[i][j];
        }
    }
    for(int i=0;i<size;i++)
    {
        for(int j=0;j<size;j++)
        {
            gaus[i][j]/=sum;
            cout<<gaus[i][j]<<"  ";
        }
        cout<<endl<<endl;
    }
    return ;
}

3. El
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
filtro gaussiano de imagen mixta (convolución gaussiana) es un filtro de paso bajo.
Puede obtener la imagen filtrada de paso alto restando la imagen filtrada gaussiana de la imagen original.

4. filtro Sobel

Principio: Primero haga el filtro, luego normalícelo

Inserte la descripción de la imagen aquí
Código de internauta:

#竖直方向[1  2  1          水平方向[1   0   -1
#      0   0  0                 2   0   -2
#      -1 -2  -1                  1   0   -1]
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
dst = np.zeros((height,width,1),np.uint8)
for i in range(0,height-2):
    for j in range(0,width-2):
        gy = gray[i,j]+2*gray[i,j+1]+gray[i,j+2]-(gray[i+2,j]+gray[i+2,j+1]+gray[i+2,j+2])
        gx = gray[i,j]+2*gray[i+1,j]+gray[i+2,j]-(gray[i,j+2]+gray[i+1,j+2]+gray[i+2,j+2])
        grad = math.sqrt(gx*gx+gy*gy)  #求梯度大小
        if grad>=100:
            dst[i,j] = 255
        else:
            dst[i,j] = 0
Mat sobel(Mat src,Mat dst)
{
 int y, x;
 int w = src.cols;
 int h = src.rows;
 
 int gx = 0, gy = 0;
 for (y = 1; y < h - 1; y++)
 {
  for (x = 1; x < w - 1; x++)
  {   
   gx=src.at<uchar>(y-1,x+1)+src.at<uchar>(y,x+1)*2+src.at<uchar>(y+1,x+1)-src.at<uchar>(y-1,x-1)-src.at<uchar>(y,x-1)*2-src.at<uchar>(y+1,x-1);
   gy=src.at<uchar>(y-1,x-1)+src.at<uchar>(y-1,x)*2+src.at<uchar>(y-1,x+1)-src.at<uchar>(y+1,x-1)-src.at<uchar>(y+1,x)*2-src.at<uchar>(y+1,x+1);
   dst.at<uchar>(y,x)=  abs(gx)+abs(gy) ;   
  }
  }
}
Publicado 29 artículos originales · elogiado 0 · visitas 500

Supongo que te gusta

Origin blog.csdn.net/qq_43771959/article/details/104308863
Recomendado
Clasificación