博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数字图像几何变换代码
阅读量:6125 次
发布时间:2019-06-21

本文共 3403 字,大约阅读时间需要 11 分钟。

原文:

版权声明:本文为博主原创文章,转载请附上链接地址。 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;        }
你可能感兴趣的文章
[TC13761]Mutalisk
查看>>
三级菜单
查看>>
Data Wrangling文摘:Non-tidy-data
查看>>
加解密算法、消息摘要、消息认证技术、数字签名与公钥证书
查看>>
while()
查看>>
常用限制input的方法
查看>>
Ext Js简单事件处理和对象作用域
查看>>
IIS7下使用urlrewriter.dll配置
查看>>
12.通过微信小程序端访问企查查(采集工商信息)
查看>>
WinXp 开机登录密码
查看>>
POJ 1001 Exponentiation
查看>>
HDU 4377 Sub Sequence[串构造]
查看>>
云时代架构阅读笔记之四
查看>>
WEB请求处理一:浏览器请求发起处理
查看>>
Lua学习笔记(8): 元表
查看>>
PHP经典算法题
查看>>
LeetCode 404 Sum of Left Leaves
查看>>
醋泡大蒜有什么功效
查看>>
hdu 5115(2014北京—dp)
查看>>
数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)...
查看>>