?? yuv.m
字號:
im=imread('0.bmp'); %讀圖
ir=imresize(im,1/2);
f=figure; %截取紅色色塊
imshow(ir);
t1=getrect(f);
ic1=imcrop(ir,t1);
r1=ic1(:,:,1);%顯示紅色色塊的r、g、b分量
g1=ic1(:,:,2);
b1=ic1(:,:,3);
r=ir(:,:,1);%顯示原圖的r、g、b分量
g=ir(:,:,2);
b=ir(:,:,3);
[m n]=size(ir(:,:,1));%對原圖ir進行yuv轉換
A=[0.299 0.587 0.114;-0.148 -0.289 0.437;0.615 -0.515 0.100];
y=zeros(size(ir));
u=zeros(size(ir));
v=zeros(size(ir));
for i=1:m
for j=1:n
x=A*[double(r(i,j));double(g(i,j));double(b(i,j))];
y(i,j)=x(1);
u(i,j)=x(2);
v(i,j)=x(3);
end
end
[p,q]=size(r1(:,:,1));%對紅塊ic1進行yuv轉換
A=[0.299 0.587 0.114;-0.148 -0.289 0.437;0.615 -0.515 0.100];
y1=zeros(size(r1));
u1=zeros(size(r1));
v1=zeros(size(r1));
for a=1:p
for b=1:q
k=A*[double(r1(a,b));double(g1(a,b));double(b1(a,b))];
y1(a,b)=k(1);
u1(a,b)=k(2);
v1(a,b)=k(3);
end
end
y1max=max(max(y1)); %求出y的極大和極小值
y1min=min(min(y1));
u1max=max(max(u1)); %求出u的極大和極小值
u1min=min(min(u1));
v1max=max(max(v1)); %求出v的極大和極小值
v1min=min(min(v1));
yuv=zeros(m,n);
for i=1:m
for j=1:n
%if(((double(y1min)-0)<y(i,j))&(y(i,j)<(double(y1max)+0)))%未經校正
%if(((double(u1min)-0)<u(i,j))&(u(i,j)<(double(u1max)+0)))
%if(((double(v1min)-0)<v(i,j))&(v(i,j)<(double(v1max)+0)))
if(((double(y1min)-30)<y(i,j))&(y(i,j)<(double(y1max)+30)))%經過校正后
if(((double(u1min)-2)<u(i,j))&(u(i,j)<(double(u1max)+2)))
if(((double(v1min)-2)<v(i,j))&(v(i,j)<(double(v1max)+2)))
yuv(i,j)=1;
end
end
end
end
end
figure;
imshow(yuv) ;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -