Matlab 小程序 yuv图片融合

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/AmazingUU/article/details/52825228

要求:
将320*200的android.bmp图片中的rgb数据转换为4:2:0格式的yuv数据,再与另一个720x576,4:2:0格式图片horseriding.yuv数据进行融合(yuv数据存储是:720x576个字节的Y数据,然后是360x288个字节的U数据,最后是360x288个字节的V数据),得到最后的YUV数据,最后将这个YUV数据用程序显示出来。最后显示结果应该是一幅大图片上面贴上了小图片的合成图片。

思路:
1、读取yuv文件中Y、U、V数据
2、处理Y、U、V数据。因为是4:2:0,所以U、V数据是Y数据的1/4,填充存储U、V数据的矩阵,使它们与存储Y数据的矩阵维度一致
3、读取bmp文件,将rgb转为yuv
4、按照小图片的宽和高,将对应大图片的位置的yuv数据替换为小图片的yuv数据,左上对齐
5、将yuv转为rgb,并显示出来

function [] = homework1( )
%UNTITLED 此处显示有关此函数的摘要
%   此处显示详细说明
fid=fopen('horseriding.yuv','r');
% fseek(fid,0,'bof');
row=720;
col=576;

UU=zeros(row,col);
VV=zeros(row,col);

Y0=fread(fid,[row,col],'uchar');
U0=fread(fid,[row/2,col/2],'uchar');
V0=fread(fid,[row/2,col/2],'uchar');

fclose(fid);

UU(1:2:row-1,1:2:col-1)=U0;%使数组维度保持一致
UU(1:2:row-1,2:2:col)=U0;
UU(2:2:row,1:2:col-1)=U0;
UU(2:2:row,2:2:col)=U0;

VV(1:2:row-1,1:2:col-1)=V0;
VV(1:2:row-1,2:2:col)=V0;
VV(2:2:row,1:2:col-1)=V0;
VV(2:2:row,2:2:col)=V0;

I=imread('android.bmp');
% figure,imshow(I),title('原始图像')
% I=double(I);
R=I(:,:,1);
G=I(:,:,2);
B=I(:,:,3);
Y1 = 0.299*R' + 0.587*G' + 0.114*B';
U1 = -0.147*R' - 0.289*G' + 0.436*B';
V1 = 0.615*R' - 0.515*G' - 0.100*B';


for i=1:1:320
        for j=1:1:200
                Y0(i,j)=Y1(i,j);
                UU(i,j)=U1(i,j)+128;
                VV(i,j)=V1(i,j)+128;
%             end
        end
%     end
end

R = Y0 + 1.140 * (VV-128 );
G = Y0 + 0.395 * (UU-128 ) - 0.581 *(VV-128);
B = Y0 + 2.032 *(UU-128);

for i=1:row %按照RGB阀值255进行值调整后输出RGB图像
    for j=1:col
        if R(i,j)<0
            R(i,j)=0;
        end
        if R(i,j)>255
            R(i,j)=255;
        end
        if G(i,j)<0
            G(i,j)=0;
        end
        if G(i,j)>255
            G(i,j)=255;
        end
        if B(i,j)<0
            B(i,j)=0;
        end
        if B(i,j)>255
            B(i,j)=255;
        end
    end
end
R=R/255;G=G/255;B=B/255;
%X=[R',G',B'];
images(:,:,1)=R';
images(:,:,2)=G';
images(:,:,3)=B';
figure,imshow(images);


end

效果图:

这里写图片描述

参考资料:
http://www.ilovematlab.cn/thread-309327-1-1.html

猜你喜欢

转载自blog.csdn.net/AmazingUU/article/details/52825228