灰度图Matlab
[转载]matlab中pcolor绘图“少画一行”的问题
本文是关于matlab pcolor函数(slice,surf函数的情况与这个类似)绘图的问题的一些解决方案,在此记录备用
经 常处理三维(或者四维)数据体的同学们大概大多数都用过matlab里面的pcolor(slice)之类的函数,可能有人注意到过本文中的这类情况,即 本来要是画一个N×N的数据体,结果却画出来一个(N-1)*(N-1)的东西,我是一直都没有注意到这个情况,直到近日有人问我这个问题……示例代码如 下:
%一个简单的matlab 脚本,用pcolor画色块图,本意是得到一个20*20的色块图:
x=0:19;
y=0:19;%注意这里有20个点
[xx,yy]=meshgrid(x,y);
data=sqrt(xx.^2+yy.^2);
figure;
hold on;
h=pcolor(xx,yy,data);
plot(x,y,'r+');
colorbar;
axis tight;
hold off;
注意实际上只得到了19*19的色块(无聊的人可以数一下……),这又是为什么呢?输入的xx,yy和数据明明都是20*20的……
咳……实际上pcolor的默认的输入参数xx,yy在绘图的时候是直接输出给句柄中的xdata和ydata参数的,
有兴趣的人可以尝试输入命令(在上面那串之后):
get(h,’xdata’)
get(h,’ydata’)
会发现和xx,yy的值是完全一样的,而xdata和ydata的用途并非是确定色块的位置坐标,而是确定网格(实际上是那些黑色的网格线的节点)的位置坐标!这样一来,就不难明白为什么20*20的坐标只会生成19*19个网格了。(什么,不明白?想一想为什么一条线段(网格)有两个节点……笑)
而给定的色块的颜色变量存储在句柄的cdata参数中,尝试:
get(h,’cdata’)
可以发现它和data变量的值也是完全相同的,有20*20个,这样一来问题就出现了,有20*20个颜色变量,却只有19*19个位置可以显示,所以matlab只能舍去最后的一行和一列不显示了……
那么解决办法是?
既然给出20×20个坐标只能显示19×19,那么想显示出20×20个色块就只有给出21×21个坐标了(没有技术含量的做法……),如:
X=0:20;
Y=0:20;%注意这里有21个点
[XX,YY]=meshgrid(X,Y);
data2=data;%复制之前的数据
data2(21,:)=data2(20,:);%复制最后一行的值到21行上
data2(:,21)=data2(:,20);%复制最后一列的值到21列上
figure;
hold on;
pcolor(XX,YY,data2);
plot(X,Y,'r+');
colorbar;
axis tight;
hold off;
这样就可以全部显示了……需要注意的是,由于最后一行和最后一列(这里是21)的颜色实际上是不能显示的,所以设成什么值其实都没关系……
然而对于完美主义者们来说这还不够……注意到图中的红色“+”了吗,那是x,y的坐标位置,也就是网格的中心“应该在”的位置,由于前面所说的xdata,ydata的性质,每个网格的位置实际上是向右和向上恰好各偏了半个网格,不太符合一般的看图习惯。
解决的方法同样没有技术含量:改坐标……
X=-0.5:19.5;
Y=-0.5:19.5;%X,Y各偏半个网格……这样网格的中心恰好在0:19上。
[XX,YY]=meshgrid(X,Y);
data2=data;
data2(21,:)=data2(20,:);
data2(:,21)=data2(:,20);
figure;
hold on;
pcolor(XX,YY,data2);
plot(x,y,'k+');
colorbar;
axis tight;
hold off;
![]()
这样就好了……slice和surf函数也有类似的问题,解决方法也类似,这里不再赘述。
本文节选自:http://hi.baidu.com/tdmxb/item/a43d5642c6e309ae61d7b93a
引用地址:http://hi.baidu.com/tdmxb/item/a43d5642c6e309ae61d7b93a
灰度图Matlab的更多相关文章
- caffe matlab 借口怎么提取灰度图的 feature ? What happened if I mixed the color images with gray images together for training ?
1. caffe matlab 接口提供了提取feature的脚本,但是由于中间要对这些图像进行RGB ---> BGR 的变换,卧槽,灰度图没有三通道啊?怎么破?从上午就在纠结怎么会跑着跑着程 ...
- Matlab 如何/怎样 读取图片 显示图片 转换成灰度图
% 读取图片 im = imread('路径') >> im = imread('ny.png'); % 显示图片 imshow(im) >> imshow(im) % 转换成 ...
- 【python】RGB图片到灰度图的转换
在做立体匹配求深度图的时候遇到这个问题,用惯了matlab的rgb2gray,倒是不熟悉python的实现,在网上找到了相关方案,记下来已作备用 RGB到灰度图转换公式: Y' = 0.299 R + ...
- 图像处理基础---RGB图 灰度图 索引图 调色板
(1)二进制图 在二进制图中,像素的取值为两个离散数值0或1中的一个,0代表黑色,1代表白色 例 A=[0 0 1;1 1 0; 0 0 1];>> imshow(A,'InitialMa ...
- C#机器视觉入门系列1-转化为灰度图&&3*3模糊
这是我入门机器视觉的系列学习经验之开篇,本来想着依靠opencv快速实现一些功能,但是想了一下既然是学数学的,还是应该自己多算算,写一些自己理解的东西才好. 入门篇很简单,就只是实现了转化成灰度图以及 ...
- Android-将RGB彩色图转换为灰度图
package com.example.yanlei.wifi; import android.graphics.Bitmap; import android.graphics.BitmapFacto ...
- QImage Color Convert to Gray 转为灰度图
在Qt中,我们有时需要把QImage类的彩色图片转为灰度图,一开始我想的是用QImage的成员函数convertToFormat(),但是试了好多参数,返现转化的图片都有问题,不是我们想要的灰度图,如 ...
- 怎么样用opencv将彩色图片转化成像素值只有0和255的灰度图?
分类: OpenCV [Q1]怎么样用opencv将彩色图片转化成像素值只有0和255的灰度图? 进行灰度化,IplImage* pImg = cvLoadImage( "C:\\1.b ...
- 从视频文件中读入数据-->将数据转换为灰度图-->对图像做canny边缘检测-->将这三个结构显示在一个图像中
//从视频文件中读入数据-->将数据转换为灰度图-->对图像做canny边缘检测-->将这三个结构显示在一个图像中 //作者:sandy //时间:2015-10-10 #inclu ...
随机推荐
- Eclipse中利用JSP把mysql-connector-java-8.0.13.jar放到WebContent\WEB-INF\lib中连接MySQL数据库时Connection conn = DriverManager.getConnection(url,username,password)报错的解决办法
开发环境: 1.系统:windows 7/8/10均可 2.jdk:1.8.0_144 3.服务器:apache-tomcat-9.0.8 4.IDE:eclipse+jsp 0.网页代码如下: &l ...
- linux日志:syslogd和klogd及syslog
一. 日志守护进程 syslogd和klogd是很有意思的守护进程,syslogd是一个分发器,它将接收到的所有日志按照/etc/syslog.conf的配置策略发送到这些日志应该去的地方,当然也包括 ...
- python二:数据类型举例练习--小白博客
一.#字符串 res = 'hello,world' 1.#字符串切片取值:******* print(res[0:5]) 顾头不顾尾,取下标0-4的字符 print(res[0:-1:2]) 步长为 ...
- 了解可执行的NPM包
NPM是Node.js的包管理工具,随着Node.js的出现,以及前端开发开始使用gulp.webpack.rollup以及其他各种优秀的编译打包工具(大多数采用Node.js来实现),大家都开始接触 ...
- c++入门之字符相关入门
先上代码: # include "iostream" # include "string" //# define BYTE char//注意,这里没有分号,且# ...
- Atcoder E - Knapsack 2 (01背包进阶版 ex )
E - Knapsack 2 Time Limit: 2 sec / Memory Limit: 1024 MB Score : 100100 points Problem Statement The ...
- vue: WebStorm设置快速编译运行
WebSorm是一款优秀的前端开发工具,而Vue项目可以使用Node进行编译运行,平常我们可以通过命令行部署项目进行调试. 本文介绍设置Webstorm进行快速部署Vue项目. 第一步 点击启动快捷按 ...
- Nginx三部曲(3)SSL
我们将告诉你 Nginx 的运作模式.蕴含的概念,怎样通过调优 Nginx 来提高应用性能,或是如何设置它的启动和运行. 这个教程有三个部分: 基本概念 —— 这部分需要去了解 Nginx 的一些指令 ...
- awr format
AWR-Format工具 在Chrome高版本中配置使用AWR-Format for Chrome插件
- java lang(Thread) 和 Runable接口
public interface Runnable { public abstract void run(); } public class Thread implements Runnable { ...