关于matlab中pcolor显示图片时的shading设置问题
在用pcolor进行显示图片时,要调用colormap,caxis,shading进行设置,才有可能还原图片本来的色彩
pcolor的用法是:
pcolor(N)
其中N是一个矩阵,矩阵的行列数表示图片有多少个色块。忘了说了,pcolor不是用像素来表示图片大小,而是用色块来表示。如果N是一个a*b的矩阵,表示这个图片长宽各位(a-1)*(b-1)个色块。
a = [1 2 3 45 6 7 89 10 11 12];pcolor(a);
shading faceted;
colormap在我的上一篇博客中有介绍http://blog.csdn.net/whoispo/article/details/49913513
这里要说明的是:N矩阵的值无论有多大多小,都可以等比例变换到colormap中(1到colormap的行数)。fill中也有类似的功能,imshow没有这样的功能,也就是imshow的矩阵的值必须在colormap中。
caxis就表示N中颜色的范围,用[min,max]表示,对于N中的所有小于等于min的值,都映射到colormap的第一行,N中所有大于等于max的值,都映射到colormap的最后一行。一般我们用默认的值,也就是min是N中最小的值,max是N中最大的值。
最后说一下shading,shading有三种模式:
shading flat
shading faceted
shading interp
flat和faceted只是色块和色块直接显示不显示黑线的问题,没有太大区别。色块的颜色用的是N中较小索引的颜色,也就是第(i,j)个色块,用的是N(i,j)的颜色值。色块内部颜色一致,所以N中最后一行和最后一列都没有用到。
interp是一个插值方法。色块内部颜色不是一致的,第(i,j)个色块内部颜色,用的是第N(i,j), N(i,j+1), N(i+1,j), N(i+1,j+1)的点的颜色进行插值出来的。因此会用到N中的所有数。
好了理论部分说完了,就说一下使用时会出现的问题吧。
问题1:
问题描述:pcolor显示图片一团黑。
[X, map] = imread('corn.tif');
pcolor(X);
colormap(map);
问题原因:这是因为matlab默认采用shading faceted。图片中的黑色,实际上是很多黑线。你放大看一看就明白了。
问题解决方法:
把黑线去掉就行了,有两种方法
solution1:
[X, map] = imread('corn.tif');
h = pcolor(X);
colormap(map);
set(h, 'edgecolor', 'none');
solution2:
[X, map] = imread('corn.tif');
h = pcolor(X);
colormap(map);
shading flat;
问题2:图片显示还是不理想,不是原图。
问题原因:[X, map] = imread(‘corn.tif’) 返回的map不是pcolor要用到的colormap,而是imshow用的colormap。我上面说了,imshow是不对矩阵做等比例变换的,imshow的矩阵中0对应map中的第一行,1对应第二行,……
你可以这样试一试
[X, map] = imread('corn.tif');
imshow(X, map);
这样就很完满地显示了图片。但是这里我想用pcolor显示图片,不用imshow。这个问题的根本原因其实就是上面返回的map矩阵,后面许多都是没用的行,也就是都是0的行。这个问题对于imshow不会出现问题,但是对于pcolor就会出问题。
因此保留map中前面的非零行作为pcolor的colormap,就没有问题了。
[X, map] = imread('corn.tif');
map = map(1:128,:);
pcolor(X);
colormap(map);
shading flat;
看起来长宽有些不对啊,用axis equal可以了
[X, map] = imread('corn.tif');
map = map(1:128,:);
pcolor(X);
colormap(map);
shading flat;
axis equal;
其实上面的这些我认为都不是什么太大的问题,自己尝试一下就明白了。下面是我认为比较重要的问题。
我在试上面的例子的时候,用的是shading interp。因为我之前用的colormap都是系统自带的winter,summer之类的colormap,这些colormap变化是平滑的,所以认为用shading interp会使得图片颜色更加平滑,放大不会出现锯齿。结果:
[X, map] = imread('corn.tif');
map = map(1:128,:);
pcolor(X);
colormap(map);
shading interp;
axis equal;
我放大之后才想明白这是什么问题:
这个原因就是colormap不是平滑的,所以插值出的颜色也是不平滑的。上面是一个色块的4个角点,matlab会在中间进行插值,插值的颜色会索引colormap,但是你看一下这个colormap:
[X, map] = imread('corn.tif');
map = map(1:128,:);
pcolor(X);
colormap(map);
shading interp;
axis equal;x = [0, 0, 1, 1];
y = [0, 1, 1, 0];
figure;
fill(x, y, [0, 0, 2, 2]);
colormap(map);
我想到了一个方法也许能解决这个问题。把这个colormap进行排序,把它变得平滑一些。因为colormap变化了,所以重新修改图片矩阵的数值。这样也许就能用shading interp了。
我现在还没有试这个方法,也许以后有时间再试。
其实如果不出问题的话,shading interp真是个好东西。用这个方法显示出的图片无论放大多少都不会出现锯齿模糊,就像矢量图片一样。
关于matlab中pcolor显示图片时的shading设置问题相关推荐
- matlab shading颜色设置,关于matlab中pcolor显示图片时的shading设置问题
在用pcolor进行显示图片时,要调用colormap,caxis,shading进行设置,才有可能还原图片本来的色彩 pcolor的用法是: pcolor(N) 其中N是一个矩阵,矩阵的行列数表示图 ...
- 4. Matlab中如何调整图片的大小
4. Matlab中如何调整图片的大小 1. 问题提出 用matlab处理图片时,有时我们想调整图片的大小,你可以自己写一个 matlab算法来调整图片的大小,还可以用matlab内置的imresiz ...
- php如何随机显示图片,php中随机显示图片的函数代码_php
/********************************************** * Filename : img.php * Author : freemouse http://www ...
- java byte 图片浏览器直接显示_在imge控件中直接显示图片(图片是byte[]格式)
在工作过程中遇到了这个问题,在网上查了一些资料,结合自己的解决方法及解决过程总结了下,方面以后查阅.如果能帮到同样遇到这个问题的你,将非常高兴哦~_~ 由于asp.net中的Image控件是在Syst ...
- Winform中datagridview显示数据时,不显示特殊符号,如下划线不显示问题
问题描述: Winform中datagridview显示数据时,不显示特殊符号,如下划线不显示问题 解决问题: 当遇到datagridview单元格数据不显示带有下划线的符号时,是字体设置问题,我们可 ...
- html中img显示图片的两种常用方式
html中img显示图片的两种常用方式 显示图片,尤其是二维码的时候,大都是自动生成的,所以就需要能够从后台返回字符串,前台浏览器进行解析.好了,下面是这两种方式. 1. <img src=&q ...
- matlab 中图的大小_关于matlab绘图中字体及图片大小等的设置
关于 matlab 绘图中字体及图片大小等的设置 1. 设置坐标轴上下限: axis([xmin,xmax,ymin,ymax]); 2. 设置图片大小: set(gcf,'Position',[x1 ...
- Vue单文件中引入背景图片时,四周有空白的问题
Vue单文件中引入背景图片时,四周有空白的问题 问题背景 初始引入背景图 更新后的背景图设置 问题背景 近期公司有个管理系统前后端分离,但是前端人员不够,只能我们后端来凑,而在前端的开发过程中总是遇到 ...
- android中如何显示图片的一部分
android中如何显示图片的一部分 分类: Android应用开发系列教程 Android应用开发技巧 2012-04-25 23:42 1728人阅读 评论(0) 收藏 举报 androidmat ...
最新文章
- Log4J xml配置
- slack 国内 android,使用Slack Api登录,Android
- ajax学习第一天。
- 数据采集串口通信系统verilog设计和仿真
- RHCS集群原理概述
- SpaceX载人龙飞船两名宇航员成功进入国际空间站
- 盘一盘 Spring 核心技术之依赖注入 | 原力计划
- java整合jdbc数据库连接工具(项目亲测)
- Iometer存储测试工具参数说明- 2 Access Specifications
- 磁共振影像分析之: 基于FSL的VBM分析(1)
- 遗传算法bp神经网络原理,bp神经网络 遗传算法
- dos批处理命令注释_如何在批处理文件MS-DOS中写注释块?
- 微信小程序云开发--上传图片到云存储获取并展示云存储里的图片
- 【Ubuntu系统下百度Apollo7.0与LGSVL2021.3联合教程(亲测有效)】
- java BMI指数计算
- 移动电源有哪些产品?热门的移动电源推荐
- 米家接入HomeKit系列四:HomeBridge搭建、配置与接入米家设备
- 计算机基础课程听课记录,听课记录-计算机应用基础
- 网页开发学习(一):制作一份邀请函
- 金融直播的引流小技巧
热门文章
- Android预优化那些事
- Android表格布局(Table Layout)
- php叠加纹理,ps光斑纹理曝光视觉特效叠加合成扩展-ps光斑纹理叠加合成扩展 - 极光下载站...
- AppLaunchScreen/Screenshot(启动图/屏幕快照)输出规范
- QLoo推出用于现有服务的GraphQL接口
- 使用Troll对ARM Cortex-M处理器进行系统内核调试
- 安装最新版本的ReSharper导致原生全局搜索工具的消失问题
- Python一些字符串判断和转换
- Spring – ${} is not working in @Value--转载
- 《统计学习方法》读书笔记(1)---学习的要素