matlab rgb怎么通过RGB三个通道的值还原彩图

MATLAB单独对RGB图像的三个分量做傅里叶变换_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
MATLAB单独对RGB图像的三个分量做傅里叶变换
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
你可能喜欢查看: 2105|回复: 8|关注: 0
根据不同灰度值给RGB通道重新赋值
矩阵超出索引值
<h1 style="color:# 麦片财富积分
新手, 积分 5, 距离下一级还需 45 积分
关注者: 1
本帖最后由 mmbupt 于
14:34 编辑
function RGBreconstruct=RGBreconstruct(f)
[width height]=size(f);
G=f(:,:,2);
for i=1:1:width
& & j=1:1:height
if G(i,j)&=50
& & Rreconstruct(:,:,1)=G(i,j);
elseif G(i,j)&=150
& &&&Greconstruct(:,:,2)=G(i,j);
& & Breconstruct(:,:,3)=G(i,j);
RGBreconstruct=cat(3, Rreconstruct(:,:,1), Greconstruct(:,:,2),&&Breconstruct(:,:,3));
figure,imshow(RGBrecconstruct),title('RGBreconstruct');
??? Index exceeds matrix dimensions.
Error in ==& RGBreconstruct at 7
if G(i,j)&=50
本意是想把RGB通道的值重新赋值,比方是灰度值小于50的赋给R通道,在50-150的赋给G通道 其余赋给B通道
不知道能不能这样做呢?
请大侠们指教下
<h1 style="color:# 麦片财富积分
关注者: 1
[width height]=size(f);这句代码有误。
假如f是200*100大小的24位图像,则[width height]=size(f);结果为,width=200,height=300
应使用[height,width,depth]=size(f);结果为height=200,width=100,depth=3;
改了一下代码:
function RGBreconstruct=RGBreconstruct(f)
[height,width,depth]=size(f);
RGBreconstruct=uint8(zeros(size(f)));
G=f(:,:,2);
for i=1:1:height
& & for j=1:1:width
& && &&&if G(i,j)&=50
& && && && &RGBreconstruct(i,j,1)=G(i,j);
& && &&&elseif G(i,j)&=150
& && && && &RGBreconstruct(i,j,2)=G(i,j);
& && &&&else
& && && && &RGBreconstruct(i,j,3)=G(i,j);
& && &&&end
figure,imshow(RGBrecconstruct),title('RGBreconstruct');
<h1 style="color:# 麦片财富积分
关注者: 1
LikeTheBird 发表于
[width height]=size(f);这句代码有误。
假如f是200*100大小的24位图像,则[width height]=size(f);结果为, ...
多谢了 是那个size函数的问题
还有个问题想请教下:提前谢谢了
怎么处理后的结果只有3种颜色呢 我想达到处理结果预期图那样的结果 是应该改阈值呢 还是我的这种想法根本就不可行呢?
未标题-1.jpg (160.94 KB, 下载次数: 0)
14:22 上传
处理结果预期图.jpg (96.38 KB, 下载次数: 0)
处理结果预期图
14:23 上传
RGBreconstruct.jpg (28.58 KB, 下载次数: 0)
14:23 上传
<h1 style="color:# 麦片财富积分
关注者: 1
mmbupt 发表于
多谢了 是那个size函数的问题
还有个问题想请教下:提前谢谢了
根据你重构的原理,重构后的图像是只有3种纯色彩。
三幅图像中哪幅是原始图像,哪幅是预期图像?
<h1 style="color:# 麦片财富积分
关注者: 1
LikeTheBird 发表于
根据你重构的原理,重构后的图像是只有3种纯色彩。
三幅图像中哪幅是原始图像,哪幅是预期图像? ...
那就是方法不对了
第一个是原图 第二是预期图
那我改用什么方法呢
<h1 style="color:# 麦片财富积分
关注者: 1
mmbupt 发表于
那就是方法不对了
第一个是原图 第二是预期图
那我改用什么方法呢
分析原图和预期图各分量的直方图,如附图所示,不是简单的变化,是对各分量进行了直方图规定化。我们常见的直方图均衡化也是直方图规定化的一种,但显然这儿使用的不是直方图均衡化。这种规定化方法我以前还没见到过,这两张图像是从某篇英文文献里面截出来的吧,那篇文献里面应该有介绍使用直方图变换得方法吧?
<h1 style="color:# 麦片财富积分
关注者: 1
LikeTheBird 发表于
分析原图和预期图各分量的直方图,如附图所示,不是简单的变化,是对各分量进行了直方图规定化。我们常见 ...
非常感谢&&没想到这么去分析预期图&&初学 没多少经验
这是我去调研时专家给的建议 说他们希望能达到预期图那样的效果
那找到直方图规定的方法,再经过我设想的RGB重构的思路 就能变换到预期图那样的色彩空间吗?
<h1 style="color:# 麦片财富积分
关注者: 1
mmbupt 发表于
非常感谢&&没想到这么去分析预期图&&初学 没多少经验
这是我去调研时专家给的建议 说他们希望能达到预 ...
是的,关键就是找到那个直方图规定化的方法。重构思路如下:
1. 分解原图得到R、G、B分量,记为r1,g1,b1;
2. 直方图规定化,r1-&r2,g1-&g2,b1-&b2;
3. 将r2、g2、b2分别作为R、G、B分量构成一幅图像。
从直方图的规律来看,R、G、B各分量规定化的方法应该是同一种。
<h1 style="color:# 麦片财富积分
关注者: 1
LikeTheBird 发表于
是的,关键就是找到那个直方图规定化的方法。重构思路如下:
1. 分解原图得到R、G、B分量,记为r1,g1,b1 ...
好的 思路很清晰 容易理解 我试试看看能不能找到合适的方法
站长推荐 /2
Powered bymatlab中 如何将lab还原成rgb
小夏轩々uqS
参考这个lab = imread('peppers.png');%假设图片是lab格式cform = makecform('lab2srgb');%转换,详情可以看这个函数的帮助rgb = applycform(lab,cform);R=rgb(:,:,1);G=rgb(:,:,2);B=rgb(:,:,3);
为您推荐:
其他类似问题
扫描下载二维码9003人阅读
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:13472次
排名:千里之外处理RGB图像和索引图像的函数
本文所属图书&>&
《数字图像处理的MATLAB实现(第2版)》是第一本介绍图像处理的基础理论以及图像处理实现中所使用软件原理的书籍,汇集了Digital Image Processing 一书的基本概念和MathWorks公司的图像处理工具箱(MathWorks公...&&
表6-3列出了在RGB图像、索引图像和灰度图像之间进行转换的工具箱函数。为了明确本节中使用的符号,我们使用rgb_image来表示RGB图像,用gray_image来表示灰度图像,用bw来表示黑白(二值)图像,用X来表示索引图像的数据矩阵分量。回想前面,索引图像由整数数据矩阵和彩色映射矩阵组成。
函数dither可以用于灰度图像和彩色图像。&抖动&是印刷和出版行业常用的一种处理手段,在由点组成的印刷页上给出色调变化的直观印象。对于灰度图像,抖动调色试图使用在白色背景上产生黑点的二值图像来得到灰色色调(反之亦然)。
点的大小可变,从明亮区域的小点到黑暗区域中逐渐增大的较大点。执行&抖动&算法的关键问题是要折中考虑视觉感受的精确性和计算的复杂度。在工具箱中应用的&抖动&方法基于佛罗伊德-斯旦伯格(Floyd-Steinberg)算法(Floyd和Steinberg[1975])和阿里坎尼(Ulichney)算法(Ulichney[1987])。用于灰度图像的函数dither的语法是:
bw = dither(gray_image)
其中,正如前面注释过的那样,gray_image是灰度图像,bw是抖动处理过的二值图像(逻辑类)。
表6-3&& 用于在RGB图像、索引图像和灰度图像之间进行转换的工具箱函数
采用&抖动&方法从RGB图像创建索引图像
从灰度图像通过阈值处理创建索引图像
从灰度图像创建索引图像
从索引图像创建灰度图像
从RGB图像创建索引图像
从索引图像创建RGB图像
从RGB图像创建灰度图像
&当处理彩色图像时,&抖动&主要是与函数rgb2ind联合起来以减少图像中的颜色数目。这个函数将在本节的后面讨论。
函数grayslice有如下语法:
X = grayslice(gray_image, n)
这个函数使用阈值对灰度图像进行阈值处理以产生索引图像:
正如前面注释过的那样,索引图像可以看做用指令imshow(X,map)通过长度适当的映射(例如jet(16))得到的。另一种语法是:
X = grayslice(gray_image, v)
其中,v是矢量(值的范围为[0,1]),用来给gray_image赋阈值。函数grayslice是伪彩色图像处理的基本工具,伪彩色为指定的灰度区域赋予不同的颜色。输入图像的类型可以是uint8、uint16或double。即使输入图像的类型是uint8或uint16,v的阈值也必须在[0,1]之间。函数执行了必要的缩放操作。
函数gray2ind采用如下语法:
[X, map] = gray2ind(gray_image, n)
执行缩放后,围绕图像gray_image,使用彩色映射gray(n)生成索引图像X。如果n省略,那么默认值为64。输入图像的类型可以是uint8、uint16或double。如果n的值小于等于256,那么输出图像X的类型是uint8;如果n的值大于256,那么类型是uint16。
函数ind2gray的语法为:
gray_image = ind2gray(X,map)
这个函数把由X和map构成的索引图像转换成灰度图像。数组X的类型可以是uint8、 uint16或double。输出图像是double类。
本章比较感兴趣的函数是rgb2ind,语法如下:
[X, map] = rgb2ind(rgb_image, n, dither_option)
在这里,n决定map的颜色数目,dither_option可以是如下两个值之一:&#39;dither&#39;(默认值),如有必要,以损失空间分辨率为代价,从而达到更好的颜色分辨率;相反,&#39;nodither&#39;将原图上的每个颜色用与之最接近的颜色映射到新图上(取决于n的值),不执行抖动。输入图像可以是uint8、uint16或double类。如果n的值小于等于256,输出数组X是uint8类,否则便是uint16类。例6.1显示了没有彩色减少的抖动效果。
函数ind2rgb的语法为:
rgb_image = ind2rgb(X, map)
这个函数将矩阵X和对应的彩色映射map转换成RGB格式。X可以是uint8、uint16或double类。输出的RGB图像是大小为M&N&3的double类的数组。
最后,函数rgb2gray的语法为:
gray_image = rgb2gray (rgb_image)
这个函数将RGB 图像转换成灰度图像。输入的RGB图像可以是uint8、uint16或double类,输出图像与输入图像的类相同。
例6.1& 对表6-3中某些函数的用法展示
函数rgb2ind对于减少RGB图像中的色彩数目很有用,正如这个函数说明的那样,关于使用抖动选项的优点,可考虑图6-4(a),这是一幅24比特的RGB图像f。
图6-4(b)和图6-4(c)显示了应用如下指令后的结果:
&& [X1, map1] = rgb2ind(f, 8, &#39;nodither&#39;);
&& imshow(X1, map1)
&& [X2, map2] = rgb2ind(f, 8, &#39;dither&#39;);
&& figure, imshow(X2, map2)
两幅图像均只有8种颜色,这相对uint8图像f可能拥有的1600万种颜色来说有显著减少。图6-4(b)显示了明显的伪轮廓,特别是在大花朵的中心部位。抖动处理之后的图像显示出了较好的色调,而且伪轮廓明显减少,这就是用抖动引入的&随机性&的结果。图像有一点点模糊,但视觉上的确优于图6-4(b)。
抖动处理的效果用灰度图像来说明往往更好。图6-4(d)和图6-4(e)是由下列指令获得的:
&& g = rgb2gray(f)
&& g1 = dither(g);
&& figure,imshow(g);figure,imshow(g1)
图6-4(e)是二值图像,这再一次说明了数据显著减少的程度。图6-4(c)和图6-4(e)展示了&抖动&之所以成为印刷和出版行业主要方法的原因,特别是在纸张质量和印刷分辨率不高的情况下(比如报纸的印刷)。
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'

我要回帖

更多关于 matlab rgb 的文章

 

随机推荐