数字图像几何变换代码

简介: 原文:数字图像几何变换代码 版权声明:本文为博主原创文章,转载请附上链接地址。 https://blog.csdn.net/ld15102891672/article/details/80628817 数字图像的旋转变换、镜像变换、错切变换以及平移变换等称为数字图像的几何变换。
原文: 数字图像几何变换代码

版权声明:本文为博主原创文章,转载请附上链接地址。 https://blog.csdn.net/ld15102891672/article/details/80628817

数字图像的旋转变换、镜像变换、错切变换以及平移变换等称为数字图像的几何变换。下文是数字图像旋转变换、镜像变换以及错切变换的基本原理的介绍以及C#代码的实现。

(1)数字图像旋转变换。

        

        数字图像旋转变换基本原理:

        

        数字图像旋转变换代码实现:

  private void btn_Rotate_Click(object sender, EventArgs e)//旋转变换按钮
        {
            BmapNew = Rotate(60.0, BmapOld);
            this.pictureNew.Image = BmapNew;
        }

private Bitmap Rotate(double Angle,Bitmap mapOld)//旋转变换代码
        {
            double rad=Math.PI/180.0*Angle;
            Matrix T = new Matrix(3, 3);
            T.setElem(0, 0, Math.Cos(rad));
            T.setElem(0, 1, -Math.Sin(rad));
            T.setElem(1,0, Math.Sin(rad));
            T.setElem(1, 1, Math.Cos(rad));
            T.setElem(2, 2,1);
            int w = mapOld.Width;
            int h = mapOld.Height;
            Bitmap mapNew = new Bitmap((int)(w * Math.Cos(rad) + h * Math.Sin(rad)) + 1, (int)(w * Math.Sin(rad) + h * Math.Cos(rad)) + 1);
            Matrix map = new Matrix(3, 1);
            for (int j = 0; j < h; j++)
            {
                for (int i = 0;  i< w; i++)
                {
                    map.setElem(0, 0, i);
                    map.setElem(1, 0, j);
                    map.setElem(2, 0, 1);
                    map = T.mult(map);
                    Color pixel=mapOld.GetPixel(i,j);
                    mapNew.SetPixel((int)map.getElem(0, 0) + (int)(h* Math.Sin(rad)), (int)map.getElem(1, 0), pixel);
                }
            }
            return mapNew;
        }

(2)数字图像镜像变换

     

     数字图像镜像变换基本原理:

     


     数字图像镜像变换代码实现:

  private void btn_JingXiang_Click(object sender, EventArgs e)//镜像变换按钮
        {
            BmapNew = Mirror(BmapOld);
            this.pictureNew.Image = BmapNew;
        }

  private Bitmap Mirror(Bitmap mapOld)//图片镜像变换代码
        {
            int w = mapOld.Width;
            int h = mapOld.Height;
            Matrix T = new Matrix(3, 3);
            T.setElem(0, 0, -1);
            T.setElem(0, 2, w);
            T.setElem(1, 1, 1);
            T.setElem(2, 2, 1);
            Bitmap mapNew =new Bitmap(w,h);
            Matrix map = new Matrix(3, 1);
            for (int j = 0; j < h; j++)
            {
                for (int i = 0; i < w; i++)
                {
                    map.setElem(0, 0, i);
                    map.setElem(1, 0, j);
                    map.setElem(2, 0, 1);
                    map = T.mult(map);
                    Color pixel = mapOld.GetPixel(i, j);
                    mapNew.SetPixel((int)map.getElem(0, 0)-1, (int)map.getElem(1, 0), pixel);
                }
            }
            return mapNew;
        }

(3)数字图像错切变换


        数字图像错切变换基本原理:


     数字图像错切变换代码实现:

  private void btn_ShearMapping_Click(object sender, EventArgs e)//错切变换按钮
        {
            BmapNew = ShearMapping(30.0, BmapOld);
            this.pictureNew.Image = BmapNew;
        }

 private Bitmap ShearMapping(double Angle,Bitmap mapOld)//图片错切变换代码
        {
            double rad = Math.PI / 180.0 * Angle;
            int w = mapOld.Width;
            int h = mapOld.Height;
            int newW = w + (int)(h * Math.Tan(rad));
            Bitmap mapNew = new Bitmap(newW, h);
            for (int j = 0; j < h; j++)
            {
                for (int i = 0; i < w; i++)
                {
                    
                    Color pixel = mapOld.GetPixel(i, j);
                    mapNew.SetPixel((int)((h-j)*Math.Tan(rad))+i, j, pixel);
                }
            }
            return mapNew;
        }

目录
相关文章
|
3月前
|
文字识别 Python
Halcon 学习笔记五:几何定位+仿射变换+测量
Halcon 学习笔记五:几何定位+仿射变换+测量
103 0
|
4月前
|
编解码 对象存储 UED
[Halcon&标定] 单相机标定
[Halcon&标定] 单相机标定
96 1
|
11月前
|
资源调度 算法 API
OpenCV_06 图像平滑:图像噪声+图像平滑+滤波
由于图像采集、处理、传输等过程不可避免的会受到噪声的污染,妨碍人们对图像理解及分析处理。常见的图像噪声有高斯噪声、椒盐噪声等。
103 0
|
机器学习/深度学习 传感器 算法
【边缘检测】基于模糊算法的图像边缘检测附matlab代码
【边缘检测】基于模糊算法的图像边缘检测附matlab代码
|
机器学习/深度学习 传感器 算法
【图像隐藏】基于高斯模型实现图像隐写附Matlab代码
【图像隐藏】基于高斯模型实现图像隐写附Matlab代码
|
机器学习/深度学习 传感器 算法
【图像分割】基于超像素的快速模糊聚类算法(SFFCM) 实现彩色图像分割附matlab代码
【图像分割】基于超像素的快速模糊聚类算法(SFFCM) 实现彩色图像分割附matlab代码
|
机器学习/深度学习 人工智能 算法
【图像配准】基于SURF特征实现印刷体汉字配准附matlab代码
【图像配准】基于SURF特征实现印刷体汉字配准附matlab代码
|
传感器 机器学习/深度学习 编解码
【图像融合】基于对比度增强结合多尺度边缘保持分解红外与可见光图像融合含Matlab源码
【图像融合】基于对比度增强结合多尺度边缘保持分解红外与可见光图像融合含Matlab源码
|
机器学习/深度学习 编解码 算法
【图像融合】基于非下采样Contourlet变换nsct算法实现红外图像和可见光图像的融合matlab源码
【图像融合】基于非下采样Contourlet变换nsct算法实现红外图像和可见光图像的融合matlab源码
|
机器学习/深度学习 算法 计算机视觉
【图像增强】基于双边滤波和局部均值算法实现图像光照增强附matlab代码
【图像增强】基于双边滤波和局部均值算法实现图像光照增强附matlab代码