| 查看: 991 | 回复: 3 | ||
[求助]
求一个RGB转到YUV颜色空间的源程序
|
|
如题,请大家看清楚啦,是RGB到YUV,不是YCbCr。要求是RGB到YUV420,如果有422,444的也一起发来吧。要求是:输入RGB图像,输出三幅图像,分别是Y,U,V。对于Y是和源图像一样大小,对于U和V则是一般大小啦,这个就不多说了。 小弟做了一个源程序,但不知道是否正确,所以想再找一个比较下。如果有的人请发一份到我的邮箱吧1400983@163.com,不胜感激了! VC或者Matlab程序都可以! |
» 猜你喜欢
请问有评职称,把科研教学业绩算分排序的高校吗
已经有6人回复
2025冷门绝学什么时候出结果
已经有6人回复
Bioresource Technology期刊,第一次返修的时候被退回好几次了
已经有7人回复
真诚求助:手里的省社科项目结项要求主持人一篇中文核心,有什么渠道能发核心吗
已经有8人回复
寻求一种能扛住强氧化性腐蚀性的容器密封件
已经有5人回复
请问哪里可以有青B申请的本子可以借鉴一下。
已经有4人回复
请问下大家为什么这个铃木偶联几乎不反应呢
已经有5人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有4人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
AI论文写作工具:是科研加速器还是学术作弊器?
已经有3人回复
» 本主题相关价值贴推荐,对您同样有帮助:
求助关于2012年公派留学申报!
已经有4人回复
求助晶体结构分析的一个问题
已经有3人回复
求助烯烃与醇的反应
已经有8人回复
求助一下大家,有没有测量口感的仪器啊,比如食品的甜度,咸度等
已经有21人回复
Fluent 颜色 截图
已经有5人回复
u-XRF的数据可以画出RGB图吗?
已经有5人回复
求助:如果纳米金外层包覆一层聚合物,做紫外会有金的吸收峰存在吗?
已经有7人回复
求offer对比。。。纠结
已经有16人回复
收到OFFER了, 求助后续的材料问题
已经有10人回复
氧化锆陶瓷烧后颜色问题
已经有14人回复
【求助】怎么也理解不了贝叶斯定律和马尔可夫链
已经有11人回复
【求助】求助 suzuki反应
已经有22人回复
【求助】pwscf并行
已经有7人回复
【求助】多糖纯化、检测及分子量测定
已经有7人回复
【求助】关于推电子基和吸电子基
已经有9人回复

【答案】应助回帖
|
function dst = rgb2yuv(src) % ensure this runs with rgb images as well as rgb triples if(length(size(src)) > 2) % rgb image ([r] [g] ) r = double(src(:,:,1)); g = double(src(:,:,2)); b = double(src(:,:,3)); elseif(length(src) == 3) % rgb triplet ([r, g, b]) r = double(src(1)); g = double(src(2)); b = double(src(3)); else % unknown input format error('rgb2yuv: unknown input format'); end % convert... y = floor(0.3*r + 0.5881*g + 0.1118*b); u = floor(-0.15*r - 0.2941*g + 0.3882*b + 128); v = floor(0.35*r - 0.2941*g - 0.0559*b + 128); % ensure valid range for uint8 values y(y > 255) = 255; y(y < 0) = 0; u(u > 255) = 255; u(u < 0) = 0; v(v > 255) = 255; v(v < 0) = 0; % generate output if(length(size(src)) > 2) % yuv image ([y] [v]) dst(:,:,1) = uint8(y); dst(:,:,2) = uint8(u); dst(:,:,3) = uint8(v); else % yuv triplet ([y, u, v]) dst = uint8([y, u, v]); end |
2楼2011-12-06 00:47:39

3楼2011-12-06 09:09:57
【答案】应助回帖
感谢参与,应助指数 +1
130098300(金币+8): 呵呵,这个我已经做出来了,但还是谢谢你 2011-12-11 10:19:57
130098300(金币+8): 呵呵,这个我已经做出来了,但还是谢谢你 2011-12-11 10:19:57
|
% RGB=imread('00000002.jpg'); %读入后便是一个RGB矩阵 width,height原始图象的宽度和高度 [width,height,z]=size(RGB); Y=zeros(width,height,'uint8'); %建立1个width*height大小的空矩阵,把这个值赋给Y yuv=rgb2ycbcr(RGB); %调用内部函数rgb2ycbcr,初步处理,转化RGB的值为YcbCr颜色空间,并把数据存储在yuv里面 Y(:, =yuv(:,:,1); %把yuv第1个矩阵值,赋给亮度Y空间U=zeros(width/2,height/2,'uint8'); %建立1个(width/2)*(height/2)大小的空矩阵,把这个值赋给色度U V=zeros(width/2,height/2,'uint8'); %建立1个(width/2)*(height/2)大小的空矩阵,把这个值赋给色度V U(:, =yuv(1:2:width-1,1:2:height-1,2); %从第一个字节开始隔2取1 由于每个像素均保留了U分量V(:, =yuv(1:2:width-1,1:2:height-1,3); %从第一个字节开始隔2取1 由于每个像素均保留了V分量YY=zeros(width,height,'uint8'); %建立1个width*height大小的空矩阵,把这个值赋给YY UU=zeros(width,height,'uint8'); %建立1个width*height大小的空矩阵,把这个值赋给UU VV=zeros(width,height,'uint8'); %建立1个width*height大小的空矩阵,把这个值赋给VV YY(:, =Y(:,:,1); %读取亮度Y某个特定的区域值给YY frame是选择那个区域,这里我们取frame==1%同上 UU(1:2:width-1,1:2:height-1)=U(:,:,1); UU(1:2:width-1,2:2:height)=U(:,:,1); UU(2:2:width,1:2:height-1)=U(:,:,1); UU(2:2:width,2:2:height)=U(:,:,1); %并非每个像素均保留了U分量,故还要插值,这里直接用邻近的赋值了,最后恢复到width*height个 %同上 VV(1:2:width-1,1:2:height-1)=V(:,:,1); VV(1:2:width-1,2:2:height)=V(:,:,1); VV(2:2:width,1:2:height-1)=V(:,:,1); VV(2:2:width,2:2:height)=V(:,:,1); %YY,UU,VV转置并合并成三维数组 YUV=cat(3,YY,UU,VV); % RGB=ycbcr2rgb(YUV); %逆转换,YUV→RGB % imshow(RGB) %显示转换后的图片 % % figure(2) % imshow(yuv); |
4楼2011-12-11 07:39:39













回复此楼
=yuv(:,:,1); %把yuv第1个矩阵值,赋给亮度Y空间