#region 灰度图转二维数组/// <summary>/// 灰度图转二维数组/// </summary>/// <param name="bitmap">灰度图</param>/// <returns></returns>public double[,] grayPictureToTwoArray(Bitmap bitmap){int width = bitmap.Width;int height = bitmap.Height;double[,] result = new double[width, height];Rectangle rect = new Rectangle(0, 0, width, height);System.Drawing.Imaging.BitmapData bmpData = bitmap.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, bitmap.PixelFormat);IntPtr ptr = bmpData.Scan0;int bytes = bmpData.Stride * height;byte[] rgbValues = new byte[bytes];System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes);//前3位地址是分别是BGR,第4位为A(alpha)for (int i = 0; i < width; i++){for (int j = 0; j < height; j++){result[i, j] = rgbValues[(j * width + i)];}}bitmap.UnlockBits(bmpData);return result;}#endregion#region 灰度二维数组转灰度图/// <summary>/// 灰度二维数组转灰度图/// </summary>/// <param name="imageArray">存储灰度值的二维数组</param>/// <returns></returns>public  Bitmap grayTwoArrayToGrayPicture(double[,] imageArray){Bitmap resultBitmap = new Bitmap(imageArray.GetLength(0), imageArray.GetLength(1));int width = resultBitmap.Width;int height = resultBitmap.Height;Rectangle rect = new Rectangle(0, 0, width, height);System.Drawing.Imaging.BitmapData bmpData = resultBitmap.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, resultBitmap.PixelFormat);IntPtr ptr = bmpData.Scan0;int bytes = bmpData.Stride * height;byte[] rgbValues = new byte[bytes];System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes);//前3位地址是分别是BGR,第4位为A(alpha)for (int i = 0; i < width; i++){for (int j = 0; j < height; j++){int temp = (j * width + i) << 2;rgbValues[temp + 3] = 255;rgbValues[temp + 2] = rgbValues[temp + 1] = rgbValues[temp] = (byte)(imageArray[i, j]*255);}}System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, bytes);resultBitmap.UnlockBits(bmpData);return resultBitmap;}#endregion//创建光栅图public void create(){int width = 1920, height = 1080;Bitmap[,] bitmap = new Bitmap[3, 4];for (int i = 0; i < 3; ++i){for (int j = 0; j < 4; ++j){bitmap[i, j] = new Bitmap(width, height);}}int[] f = { 73, 64, 56 };for (int i = 0; i < 3; ++i){for (int j = 0; j < 4; ++j){//图像转换为数组double[,] Ce = grayPictureToTwoArray(bitmap[i, j]);for (int k = 0; k < width; ++k){for (int w = 0; w < height; ++w){Ce[k, w] = 0.5 + 0.5 * Math.Sin(2 * Math.PI * (k ) * f[i] / (width) + j * Math.PI / 2);}}//数组转换为图像,保存到本地Bitmap temp = grayTwoArrayToGrayPicture(Ce);temp.Save("D:\\image" + (i + 1) + "_" + (j + 1) + ".bmp", System.Drawing.Imaging.ImageFormat.Bmp);}}}

多频相位三维重建之生成正弦光栅投影图C#代码相关推荐

  1. matlab 控制投影仪 正弦光栅,一种基于投影仪散焦解相位的光栅投影三维快速测量方法...

    一种基于投影仪散焦解相位的光栅投影三维快速测量方法 [技术领域] [0001] 本发明涉及三维信息重构领域,尤其是一种基于投影仪散焦解相位的光栅投影三 维快速测量方法. [背景技术] [0002] 光 ...

  2. 正弦光栅的生成matlab,matlab做正弦光栅衍射的计算机模拟

    正弦光栅衍射的计算机模拟 陈永万 (玉溪师范学院理学院物理系 08级物理2班 云南 玉溪 653100) 指导教师 :任继阳 摘要:本文利用Matlab对正弦光栅衍射实验进行仿真模拟.先创建用户界面, ...

  3. 基于光栅投影的三维重建

    基于光栅投影的三维重建 客观物体在空间上是三维的,但是人们从客观景物上得到的图像往往是二维的.光栅投影就是通过获取的二维信息来反映并还原物体的三维信息. 一.三维形貌测量技术的发展 三维形貌测量技术又 ...

  4. matlab正弦光栅,科学网—光栅-正弦,矩形 - 宗兆玉的博文

    几种光栅.正弦光栅,矩形光栅,正弦光栅的强度衍射分布. NO1 %正弦振幅型光栅 clear all;clc close all I=zeros(768,1024); for i=1:768 for ...

  5. matlab模拟光栅,用MATLAB模拟正弦光栅的衍射

    文章幼号 压 路 用 模拟正弦光栅的衍射 王 建荣 王 小伟 太原科技大学应用科学学院 , 山西 太原 摘 要 墓于光学理 论 的抽象性 , 利用 模拟 了正 弦光栅 的衍射实验 , 得 出正 弦光栅 ...

  6. 3.6总结半年来的专业学习——图像处理、光栅投影、四步相移、多频外差,从matlab入门到opencv入门

    2019.9.17 研究生导师定了,老师给了一些论文,并推荐了几本书 1.计算机辅助光学测量/金观昌著 作者是在美国奥克兰大学杨老师实验室做过访问学者,所以书的内容和实验室的研究方向非常切合 2.基于 ...

  7. Matlab:仿真正弦光栅的衍射传输特性

    本文基于光学原理,用Matlab实现正弦光栅的衍射传输特性仿真. 正弦光栅分类: 振幅型:光栅的透过率函数符合一个正弦sin函数的分布. 相位型:光栅对相位的调制符合一个正弦sin函数的分布. Pro ...

  8. matlab正弦光栅条纹及调整

    目录 频率均匀正弦光栅条纹 频率不均匀正弦光栅 幅度不均匀正弦光栅 频率均匀正弦光栅条纹 I=zeros(512,512); for i=1:512for j=1:512I(i,j)=128+127* ...

  9. 快速三维重建 快速光栅投影

    以前做的三维扫描设备的打光速度不高,主要受限于HDMI的数据传输和非触发相机采集的关系. 最近搞了一款可以带触发的投影仪终于可以实现快速光栅投射了,投影仪帧率120,相机帧率36.具体如下: 1:将光 ...

最新文章

  1. C++ 类的内存分布
  2. 关于redis的几件小事(三)redis的数据类型与使用场景
  3. Oracle体系结构中的各种名称
  4. webpack项目上传云服务器,webpack项目上传云服务器
  5. C++和Java的属性访问和方法调用 效率比较
  6. 写入接口c语言_PYNQ: 使用CFFI嵌入C语言
  7. [C++11]常量表达式函数
  8. Leetcode--287. 寻找重复数
  9. 训练数据的分布对F-measure, recall 和 precision的影响
  10. OJ1031: 判断点在第几象限
  11. 7-87 吉老师的回归 (15 分)
  12. 孔维滢201771010110《面向对象程序设计(java)》第一周学习总结
  13. Java中四种遍历Map对象的方法
  14. python磁盘空间_python3实现磁盘空间监控
  15. 科沃斯扫地机器人阿尔法_科沃斯(Ecovacs)阿尔法地宝简单开箱
  16. JQuery simpleModal插件的使用-遁地龙卷风
  17. 谈谈如何使用 opencv 进行图像识别
  18. Hibernate基础知识整理(三)
  19. eclipse中下划线显示不出来问题解决
  20. CSS选择器和层叠性

热门文章

  1. Eclipse RCP开发桌面程序
  2. 系统网络“人肉”监控
  3. Nodejs-npm
  4. moon服务器 zerotier_使用ZeroTier组建虚拟内网/如何搭建MOON转发服务器
  5. HP Proliant DL 360 G9部署VMware ESXI 6.7
  6. 苹果电脑显示内存不足有什么办法解决
  7. 码出高效:Java开发手册笔记(线程池及其源码)
  8. 无线密码忘记了,怎么找回?
  9. 四人团-江南行-奉化-雪窦山旅游
  10. Android Stuidio —— 一键拨号