MATLAB在三维坐标中显示图片 并 使得图片部分透明
要画一个光路图,本来可以用proe,但是鼠标不好用,有些操作也忘了,用MATLAB画了个。下面是用到的图片。
但是三维坐标中显示彩色图片的目标没有搞定,做了个灰度图,然后用仿射程序将彩色图片贴到了二维灰度图中。
clear all;clc;close all; im1 = rgb2gray(imread('F:\sup.jpg'));% 掩模,第一张图,白色的部分在后面的surf中透明化了
im1 = imresize(im1,[64 64]); im2 = rgb2gray(imread('F:\im3.jpg'));% 样品,第二张图
im2(:,end) = [];
im2 = imresize(im2,[64,64]);
im2 = flipud(im2); im3 = rgb2gray(imread('F:\diff.jpg'));% 衍射图样,第三张图
im3(513:end,:) = [];
im3(:,513:end) = [];
im3 = flipud(im3); % figure;
% subplot(121);imshow(im1);
% subplot(122);imshow(im4);
mask = PIEmask(256,200,128,128);
mask = imresize(mask,[64 64]);
%%
figure('color','white'); N = size(im3);
[x z] = meshgrid(-N/2:N/2-1);
y = 0*ones(N,N);
a = surf(x,y,z, double(im3) ); % 画衍射图
set(a,'linestyle','none'); %隐藏网格
colormap(gray); hold on;
N = size(im2);
[x z] = meshgrid(-N/2:N/2-1);
y = -200*ones(N,N);
b = surf(x,y,z, double(im2) ); % 画样品图
set(b,'linestyle','none'); %隐藏网格
colormap(gray); hold on;
N = size(im1);
[x z] = meshgrid(-N/2:N/2-1);
y = -210*ones(N,N);
% c = surf(x,y,z, double(im1) );
c = surf(x,y,z, double(im1),'FaceAlpha','flat','AlphaDataMapping','scaled','AlphaData',1-mask); % 画掩模图,并将中间部分透明化
% alpha(0.5)
set(c,'linestyle','none'); %隐藏网格
colormap(gray);
%% 后面的部分就是画红色的‘光’了
[yy zz] = meshgrid(-500:-210,-32:32);
xx = 32*ones(size(yy)); p = surf(xx,yy,zz,double(255*ones(size(zz))),'FaceAlpha','flat',...
'AlphaDataMapping','scaled',...
'AlphaData',0.2*ones(size(zz)),...
'FaceColor','red');
set(p,'linestyle','none'); %隐藏网格 p = surf(-xx,yy,zz,double(255*ones(size(zz))),'FaceAlpha','flat',...
'AlphaDataMapping','scaled',...
'AlphaData',0.2*ones(size(zz)),...
'FaceColor','red');
set(p,'linestyle','none'); %隐藏网格
%==========================================
[xx yy] = meshgrid(-32:32,-500:-210);
zz = 32.*ones(size(xx)); p = surf(xx,yy,zz,double(255*ones(size(zz))),'FaceAlpha','flat',...
'AlphaDataMapping','scaled',...
'AlphaData',0.2*ones(size(zz)),...
'FaceColor','red');
set(p,'linestyle','none'); %隐藏网格 p = surf(xx,yy,-zz,double(255*ones(size(zz))),'FaceAlpha','flat',...
'AlphaDataMapping','scaled',...
'AlphaData',0.2*ones(size(zz)),...
'FaceColor','red');
set(p,'linestyle','none'); %隐藏网格
%%
t = 0:0.01:2*pi;
x = 25*cos(t');x = repmat(x,1,300);
z = 25*sin(t');z = repmat(z,1,300); y = linspace(-210,-200,300);
y = repmat(y,629,1); p = surf(x,y,z,x*0,'FaceAlpha','flat',...
'AlphaDataMapping','scaled',...
'AlphaData',0.5*ones(size(z)),...
'FaceColor','red');
set(p,'linestyle','none'); %隐藏网格
%%
s1 = -25*sqrt(2)/2;
s2 = -256;
t1 = linspace(s1,s2,100);
x = [];
t2 = linspace(-s1,-s2,100);
for k = 1:100;
tmp = (linspace(t1(k),t2(k),200))';
x = [x tmp];
end y = linspace(-200,0,100);
y = repmat(y,200,1);
z = linspace(25*sqrt(2)/2,255,100);
z = repmat(z,200,1); p = surf(x,y,z,x*0,'FaceAlpha','flat',...
'AlphaDataMapping','scaled',...
'AlphaData',0.2*ones(size(z)),...
'FaceColor','red');
set(p,'linestyle','none'); %隐藏网格 p = surf(x,y,-z,x*0,'FaceAlpha','flat',...
'AlphaDataMapping','scaled',...
'AlphaData',0.2*ones(size(z)),...
'FaceColor','red');
set(p,'linestyle','none'); %隐藏网格 p = surf(z,y,x,x*0,'FaceAlpha','flat',...
'AlphaDataMapping','scaled',...
'AlphaData',0.15*ones(size(z)),...
'FaceColor','red');
set(p,'linestyle','none'); %隐藏网格 p = surf(-z,y,x,x*0,'FaceAlpha','flat',...
'AlphaDataMapping','scaled',...
'AlphaData',0.15*ones(size(z)),...
'FaceColor','red');
set(p,'linestyle','none'); %隐藏网格
%% grid off;
axis off; view([150 -256 50]);
% view([150 -100 0]);
daspect([10,3,10]);%调节坐标轴比例
效果如下
之后又用了个仿射程序把衍射图样彩色化了
MATLAB在三维坐标中显示图片 并 使得图片部分透明的更多相关文章
- MFC对话框中显示BMP,JPG图片
//************************************ // 方法说明: 显示JPG和GIF.BMP图片 // 参数说明: CDC * pDC 设 ...
- MATLAB:读取txt文件中物体的三维坐标,显示三维模型
在MATLAB中建立一个脚本show3Dtxt.m文件,编写代码: clear; %%read 3D data fileID= fopen('E:\博士\深度学习与三维重建\代码实现\voxel_gr ...
- MATLAB:读取mat文件中物体的三维坐标,显示三维模型
在MATLAB中建立一个脚本show3Dmat.m文件,编写代码: clc; clear; %%read 3D data load('E:\博士\深度学习与三维重建\代码实现\3DRecGAN\X_Y ...
- matlab如何保存figure中去掉白边的图片
输出图片成可直接调入的灰度图,设置输出图片空白边距,以及调整图片大小,纵横比. 一.先显示图片,imshow.如果是plot,或者newplot,直接看“三”.imshow(strain_image, ...
- web中显示中文名称的图片,可以这样配置filter
com.cy.filter.UrlFilter: package com.cy.filter; import java.io.IOException; import java.net.URLDecod ...
- [GDAL]在三维场景中显示DEM
粗糙实现了个版本 存储波段的基本信息和数据: namespace RGeos.Terrain { //存储波段的基本信息和数据 public class RasterBandData { public ...
- 在应用中显示的图片很多情况不满足业务需求,我们需要动态根据图片的宽高进行缩放或加载中显示的缺省图片,这是我没就需要监听图片加载完成回调,来看看微信小程序怎么实现图片加载完成回调。
<swiper-item> <image src="{{item.image}}" class="slide-image" mode=&quo ...
- matlab中显示灰阶图像
matlab的数据源文件中400张图片,每张图片是一个112*92的矩阵表示,而400张图片存储在一个cell数组ime中,显示第一张图片,指令是: colormap(gray) imagesc(im ...
- Flash图表控件FusionCharts如何在图表中显示标识和图片
在FusionCharts的图表中显示外部商标 使用FusionCharts之后,用户可以在运行时加载需要在图表中显示的外部标识/图片/图像.这个标识可以GIF / JPEG / PNG或SWF文件格 ...
随机推荐
- C++学习(三十一)(C语言部分)之 栈和队列(括号匹配示例)
括号匹配测试代码笔记如下: #include<stdio.h> #include<string.h> #include <stdlib.h> #define SIZ ...
- oracle 数据库相关名词--图解
通过下图,我们可以更好的理解oracle的结构关系. 知识拓展: 知识点及常用的命令如下: 1)通常情况我们称的“数据库”,并不仅指物理的数据集合,他包含物理数据.数据库管理系统.也即物理数据.内存 ...
- 欢迎大家使用Druid,常见问题在这里解答,希望对大家有所帮助
https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 欢迎大家使用Druid,常见问题在这里解答,希望对 ...
- LOJ3048 「十二省联考 2019」异或粽子
题意 题目描述 小粽是一个喜欢吃粽子的好孩子.今天她在家里自己做起了粽子. 小粽面前有 $n$ 种互不相同的粽子馅儿,小粽将它们摆放为了一排,并从左至右编号为 $1$ 到 $n$.第 $i$ 种馅儿具 ...
- xencenter如何安装系统
首先点击增加服务器 输入xenserver的ip和用户名以及密码 添加资源池,注意下面那个add new server也要指定一个server,例如刚刚创建的那个 还要搞一个存储的,注意iso要选择s ...
- Intellij IDEA2017.3永久激活方法
随着idea不断地发展,eclipse的缺点日渐明显,为了能够获得良好的编码体验,越来越多的朋友转向了idea,淘汰了eclipse但是由于近期idea所有私人服务器被封杀了,很多喜欢编码的朋友们都陷 ...
- 移除元素(remove,remove_if...unique...)
remove 因为本算法作用的是iterator,所以并不会改变Container大小,会返回一个新的iterator new_last,是的first到new_last中的元素都不等于value,左 ...
- python 用type()创建类
type()可以查看一个类型,也可以查看变量的类型 class Hello1(object): def hello(self, name = 'world'): print('Hello, %s' % ...
- 基于MVC4+EasyUI的Web开发框架形成之旅(7)--权限控制
我在上一篇随笔<基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍>中大概介绍了基于MVC的Web开发框架的权限控制总体思路.其中的权限控制就是分为“用户登录身份验证” ...
- npm是什么
npm简介 维基百科中npm定义 npm完全用JavaScript写成,最初由艾萨克·施吕特(Isaac Z. Schlueter)开发. 艾萨克表示自己意识到"模块管理很糟糕"的 ...