[Computer Vision]作业加网课知识——2

写在前面

以下代码均为网上摘抄,本人完整代码如有需要,私!

hw1

hw1:
1.图像调整大小
先改变图像内存大小,例如:
在这里插入图片描述
要从 X:4 * 4 —— Y:7 * 7

计算两点之间的坐标变换关系:
aX + b = Y ,求得a = 4/7,b = -3/14

插值方法:

1)最邻近元法
即将距离待求象素最近的邻象素灰度赋给待求象素。
在这里插入图片描述
2)三角插值法

Q = V1A1 + V2A2 + V3*A3
在这里插入图片描述
3)双线插值法

在这里插入图片描述
循环遍历像素并映射回旧坐标
使用最近邻插值来填充图像

2、卷积图像过滤
在这里插入图片描述
在这里插入图片描述
CSDN上找到一个动图解释:
在这里插入图片描述
网上的代码(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、混合图像(高斯卷积)
在这里插入图片描述
在这里插入图片描述
高斯滤波器是一个低通滤波器
用原图减去高斯滤波后的图像就可以得到高通滤波后的图像

4、Sobel过滤器

原理:先制作过滤器,再归一化处理

在这里插入图片描述
网友的代码:

#竖直方向[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) ;   
  }
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值