📄 yiq.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进行yiq转换
A=[0.299 0.587 0.144;0.596 -0.274 -0.322;0.212 -0.523 0.311];
Y=zeros(size(ir));
I=zeros(size(ir));
Q=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);
I(i,j)=x(2);
Q(i,j)=x(3);
end
end
[p,q]=size(r1(:,:,1));%对红块ic1进行yuv转换
A=[0.299 0.587 0.144;0.596 -0.274 -0.322;0.212 -0.523 0.311];
Y1=zeros(size(r1));
I1=zeros(size(r1));
Q1=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);
I1(a,b)=k(2);
Q1(a,b)=k(3);
end
end
Y1max=max(max(Y1)); %求出y的极大和极小值
Y1min=min(min(Y1));
I1max=max(max(I1)); %求出u的极大和极小值
I1min=min(min(I1));
Q1max=max(max(Q1)); %求出v的极大和极小值
Q1min=min(min(Q1));
YIQ=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(I1min)-0)<I(i,j))&(I(i,j)<(double(I1max)+0)))
%if(((double(Q1min)-0)<Q(i,j))&(Q(i,j)<(double(Q1max)+0)))
if(((double(Y1min)-2)<Y(i,j))&(Y(i,j)<(double(Y1max)+2)))%经过校正后
if(((double(I1min)-0)<I(i,j))&(I(i,j)<(double(I1max)+0)))
if(((double(Q1min)-0)<Q(i,j))&(Q(i,j)<(double(Q1max)+0)))
YIQ(i,j)=1;
end
end
end
end
end
figure;
imshow(YIQ) ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -