图像Demosaic算法实验报告材料.docx

上传人:b****1 文档编号:2741213 上传时间:2023-05-04 格式:DOCX 页数:16 大小:1.65MB
下载 相关 举报
图像Demosaic算法实验报告材料.docx_第1页
第1页 / 共16页
图像Demosaic算法实验报告材料.docx_第2页
第2页 / 共16页
图像Demosaic算法实验报告材料.docx_第3页
第3页 / 共16页
图像Demosaic算法实验报告材料.docx_第4页
第4页 / 共16页
图像Demosaic算法实验报告材料.docx_第5页
第5页 / 共16页
图像Demosaic算法实验报告材料.docx_第6页
第6页 / 共16页
图像Demosaic算法实验报告材料.docx_第7页
第7页 / 共16页
图像Demosaic算法实验报告材料.docx_第8页
第8页 / 共16页
图像Demosaic算法实验报告材料.docx_第9页
第9页 / 共16页
图像Demosaic算法实验报告材料.docx_第10页
第10页 / 共16页
图像Demosaic算法实验报告材料.docx_第11页
第11页 / 共16页
图像Demosaic算法实验报告材料.docx_第12页
第12页 / 共16页
图像Demosaic算法实验报告材料.docx_第13页
第13页 / 共16页
图像Demosaic算法实验报告材料.docx_第14页
第14页 / 共16页
图像Demosaic算法实验报告材料.docx_第15页
第15页 / 共16页
图像Demosaic算法实验报告材料.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

图像Demosaic算法实验报告材料.docx

《图像Demosaic算法实验报告材料.docx》由会员分享,可在线阅读,更多相关《图像Demosaic算法实验报告材料.docx(16页珍藏版)》请在冰点文库上搜索。

图像Demosaic算法实验报告材料.docx

图像Demosaic算法实验报告材料

图像Demosaic算法

1、马赛克成因

一般的数码相机采用CDC或CMOS做传感器,约占数码相机总成本的10%一25%,是相机的最昂贵的部件之一"对于专业相机,如用在科学或医学中的,使用了三个传感器,每一个像素点都可以直接获得RGB三个值,每一个传感器需要精确的机械控制,以便对应着各自的色彩通道,这是最昂贵的解决方法"在这种情况下,每一个传感器得到一幅完整的单通道图像,最后再合成一幅全彩色图像"不出现马赛克现象"

为了减少成本,缩小数码相机的体积,一般市场上的相机大都是单传感器,在传

感器的上面覆盖了一层按照Bayer模式排列的色彩滤波阵列,每一个像素点只能够捕获一个色彩值,而缺失另外两个色彩值,这时候得到的是一幅马赛克图像,为了得到全彩色的图像,我们需要利用其周围的像素点的色彩值来估计出缺失的另外两种颜色,这种处理叫做去马赛克"

二、常见的demosaic方法

关于demosaicing方法在过去二十年中一直是研究热点,已有的文献中就报道了大量有价值的插值算法,一般来说算法可以分为两类。

第一类是单个颜色通道独立插值算法,包括邻域插值法、双线性插值法、卷积插值法等,规律是未知的绿色分量值仅由已知的绿色像素的强度进行估算,对红和蓝色通道亦是如此。

其中最典型、应用最多的是双线性法。

这一类算法容易实现,在平滑区域内也可以得到比较满意的效果,但在高频区域,尤其是在边界区域却失真明显。

第二类则是利用多通道的相关性进行插值,这一类自适应的算法常常结合了对图像细节的分析判断以及颜色通道之间的相关性,插值效果要明显优于前一类,大部分的

算法都属于这一类。

例如基于边界的算法,加权系数法,交互式插值法,最优化恢复,也有部分算法利用了信号变换如小波变换,傅立叶变换等,这些算法通常能得到比较满意的效果,尤其是清晰的边界与细节特征,但往往算法复杂,无法应用于数码相机信号转换系统。

(1)双线性插值法

双线性(bilinear)法属于单通道独立插值法,作为最传统、简单、基础的插

值算法之一,它仍然是理解并设计新型算法的基础,对参考评估其它算法的性能

仍具有广泛的意义,参考图3-1,该图为标注了坐标位置的Bayer采样阵列,传感

器只获得相应位置所对应的单色分量的强度。

 

考虑坐标(3,3),此处只有红色信息,为了得到全彩色信息,必须恢复出蓝色和

绿色分量,利用双线性法可以得到:

由于双线性法是单通道之间独立插值,并且始终取3×3滤波器的平均值,忽

略了细节信息,以及图片三个颜色通道之间的相关性,所以双线性法往往不能得

到满意的插值效果,容易在细线状态结构的边缘处产生锯齿形图案。

(2)自适应插值法

在Bayer格式中,绿色像素占了总像素的一半,也反映了更多的细节,因此,

插值都会优先考虑对绿色通道的恢复,而红色和蓝色的比例较少,细节信息少,

需要估算的信息多,失真会明显,为改进算法的性能,多会从改善红色与蓝色通

道着手。

为合理解决边界的插值问题,研究人员提出了基于梯度的插值算法。

为保证

插值是沿着边界进行,而没有跨越边界,在恢复绿色分量时,先通过计算梯度来

检测边界方向,从而选择合适的插值方向。

例如,为恢复出采样点的绿色分量,

先计算出该点水平和竖直方向的梯度算子。

参考图3-1,以B44为例,假设α为该采样点水平方向的梯度,β为竖直方向的梯度,

Laroche则通过计算二阶微分即色度分量来确定边界方向,其中:

如果α<β,则认为水平方向存在边界的概率比较大,插值会沿着最可能的边

界进行,即在水平方向进行,而水平方向的邻域像素与被插值点的像素的相关性

也会大于竖直方向的像素。

插值结果如下式所示:

如果α>β,则认为在竖直方向存在边界的概率大,插值在竖直方向进行,插

值结果为:

如果两者相比较相等的话,则认为该像素点处在一个平滑区域内,插值在整

个邻域内进行,认为:

 

一旦亮度被确定,则色度分量通常是由亮度信号和色度信号的相关性来进行

插值。

第二步:

在对红色和蓝色通道插值时,用到的基本思想是基于色差的插值算

法。

色差思想与色比恒定的思想是一致的,它认为在图片的小平滑区域内,色差

是恒定的。

假设(i,j)邻近的一个采样点是(m,n),则有:

 

上面的等式成立即是利用了色差恒定的原则。

假设我们需要恢复红色通道信息,根据阵列的排列规律,有三种不同的情况,

分别如下:

(1)假设要恢复G34处的红色分量:

 

(2)假设要恢复G43处的红色分量:

 

(3)假设要恢复B44处的红色分量:

 

蓝色通道处理往往是与红色通道一致,必须注意的是在色度值确立之时,已

经获得了整个图片的亮度信号。

经过这两个步骤的处理,可以获得Bayer图片的重构图像。

以上所述,即是自适应插值法的过程。

3、实验结果

原图

Bayer阵列

 

非自适应插值(双线性)

自适应插值法

4、总结

通过三类图像的比较,可以看出真彩色图像的三个颜色通道之间有很强的相

关性,插值最好结合其相关性,而不能依赖于单通道独立插值;其次,由于图片

的失真往往出现在高频区域,必须考虑基于边界的插值方案,对图像的区域细节

特征进行分析,使得插值尽可能沿着边界方向,或是使得边界方向插值核的加权

系数尽可能大。

 

附录:

Matlab代码

%双线性插值

clear;

clc;

I=imread('9.jpg');

figure

imshow(I);

 

[h,w,c]=size(I);

[m,n]=size(I);

m=h,

n=w;

fori=1:

2:

h

forj=1:

w

ifmod(j,2)==1

IMG(i,j,1)=I(i,j,1);

else

IMG(i,j,2)=I(i,j,2);

end

end

end

fori=2:

2:

h

forj=1:

w

ifmod(j,2)==1

IMG(i,j,2)=I(i,j,2);

else

IMG(i,j,3)=I(i,j,3);

end

end

end

figure

imshow(IMG);

%IMG11=rgb2gray(IMG);

%save('Bayer.png','IMG11')

IMG=double(IMG);

fori=2:

2:

m-1

forj=2:

2:

n-1

x11=IMG(i-1,j-1,1);

x12=IMG(i-1,j+1,1);

x21=IMG(i+1,j-1,1);

x22=IMG(i+1,j+1,1);

IMG(i,j,1)=uint8((x11+x21+x12+x22)/4);

end

end

fori=2:

m-1

forj=2:

n-1

ifIMG(i,j,1)==0

IMG(i,j,1)=0.25*(IMG(i,j+1,1)+IMG(i,j-1,1)+IMG(i+1,j,1)+IMG(i-1,j,1));

else

IMG(i,j,1)=IMG(i,j,1);

end

end

end

fori=2:

2:

m-1

forj=2:

2:

n-1

IMG(i,j,2)=0.25*(IMG(i,j+1,2)+IMG(i,j-1,2)+IMG(i+1,j,2)+IMG(i-1,j,2));

end

end

 

fori=2:

m-1

forj=2:

n-1

ifIMG(i,j,2)==0

x11=IMG(i-1,j-1,2);

x12=IMG(i-1,j+1,2);

x21=IMG(i+1,j-1,2);

x22=IMG(i+1,j+1,2);

IMG(i,j,2)=uint8(0.25*(x11+x21+x12+x22));

else

IMG(i,j,2)=IMG(i,j,2);

end

end

end

fori=3:

2:

m-1

forj=3:

2:

n-1

x11=IMG(i-1,j-1,3);

x12=IMG(i-1,j+1,3);

x21=IMG(i+1,j-1,3);

x22=IMG(i+1,j+1,3);

IMG(i,j,3)=uint8(0.25*(x11+x21+x12+x22));

end

end

 

fori=2:

m-1

forj=2:

n-1

ifIMG(i,j,3)==0

IMG(i,j,3)=0.25*(IMG(i,j+1,3)+IMG(i,j-1,3)+IMG(i+1,j,3)+IMG(i-1,j,3));

else

IMG(i,j,3)=IMG(i,j,3);

end

end

end

 

figure

imshow(uint8(IMG));

%梯度

clear;

clc;

I=imread('DD.jpg');

figure

imshow(I);

 

[h,w,c]=size(I);

m=h;

n=w;

R=zeros(m,n);

G=zeros(m,n);

B=zeros(m,n);

R1=zeros(m+4,n+4);

G1=zeros(m+4,n+4);

B1=zeros(m+4,n+4);

fori=1:

2:

h

forj=1:

w

ifmod(j,2)==1

IMG(i,j,1)=I(i,j,1);

else

IMG(i,j,2)=I(i,j,2);

end

end

end

fori=2:

2:

h

forj=1:

w

ifmod(j,2)==1

IMG(i,j,2)=I(i,j,2);

else

IMG(i,j,3)=I(i,j,3);

end

end

end

R=IMG(:

:

1);

G=IMG(:

:

2);

B=IMG(:

:

3);

R1(3:

m+2,3:

n+2)=R;

R1(3:

m+2,1)=R(:

2);

R1(3:

m+2,2)=R(:

1);

R1(3:

m+2,n+3)=R(:

n);

R1(3:

m+2,n+4)=R(:

n-1);

R1(1,:

)=R1(4,:

);

R1(2,:

)=R1(3,:

);

R1(m+3,:

)=R1(m+2,:

);

R1(m+4,:

)=R1(m+1,:

);

G1(3:

m+2,3:

n+2)=G;

G1(3:

m+2,1)=G(:

2);

G1(3:

m+2,2)=G(:

1);

G1(3:

m+2,n+3)=G(:

n);

G1(3:

m+2,n+4)=G(:

n-1);

G1(1,:

)=G1(4,:

);

G1(2,:

)=G1(3,:

);

G1(m+3,:

)=G1(m+2,:

);

G1(m+4,:

)=G1(m+1,:

);

B1(3:

m+2,3:

n+2)=B;

B1(3:

m+2,1)=B(:

2);

B1(3:

m+2,2)=B(:

1);

B1(3:

m+2,n+3)=B(:

n);

B1(3:

m+2,n+4)=B(:

n-1);

B1(1,:

)=B1(4,:

);

B1(2,:

)=B1(3,:

);

B1(m+3,:

)=B1(m+2,:

);

B1(m+4,:

)=B1(m+1,:

);

X=cat(3,R1,G1,B1);

figure,imshow(uint8(X))

fori=4:

2:

m

forj=4:

2:

n

a=abs(2*B1(i,j)-B1(i,j-2)-B1(i,j+2));

b=abs(2*B1(i,j)-B1(i-2,j)-B1(i+2,j));

ifa

G1(i,j)=(G1(i,j-1)+G1(i,j+1))/2;

elseifa>b

G1(i,j)=(G1(i-1,j)+G1(i+1,j))/2;

else

G1(i,j)=(G1(i-1,j)+G1(i,j-1)+G1(i,j+1)+G1(i+1,j))/4;

end

end

end

fori=3:

2:

m-1

forj=3:

2:

n-1

a=abs(G1(i,j-1)-G1(i,j+1));

b=abs(G1(i-1,j)-G1(i+1,j));

ifa

G1(i,j)=(G1(i,j-1)+G1(i,j+1))/2;

elseifa>b

G1(i,j)=(G1(i-1,j)+G1(i+1,j))/2;

else

G1(i,j)=(G1(i,j-1)+G1(i,j+1)+G1(i-1,j)+G1(i+1,j))/4;

end

end

end

end

fori=4:

2:

m

forj=4:

2:

n

a=abs(2*(G1(i,j)-G1(i-1,j+1)-G1(i+1,j-1)))+abs(G1(i-1,j+1)-G1(i+1,j-1));

b=abs(2*(G1(i,j)-G1(i-1,j-1)-G1(i+1,j+1)))+abs(G1(i-1,j-1)-G1(i+1,j+1));

ifa

R1(i,j)=(R1(i-1,j+1)+R1(i+1,j-1))/2+(2*G1(i,j)-G1(i-1,j+1)-G1(i+1,j-1))/2;

elseifa>b

R1(i,j)=(R1(i-1,j-1)+R1(i+1,j+1))/2+(2*(G1(i,j)-G1(i-1,j-1)-G1(i+1,j+1)))/2;

else

R1(i,j)=(R1(i-1,j-1)+R1(i-1,j+1)+R1(i+1,j-1)+R1(i+1,j+1))/4+(4*G1(i,j)-G1(i-1,j-1)-G1(i-1,j+1)-G1(i+1,j-1)-G1(i+1,j+1))/4;

end

end

end

end

fori=3:

2:

m-1;

forj=4:

2:

n;

R1(i,j)=(R1(i,j-1)+R1(i,j+1))/2-(G1(i,j-1)+G1(i,j+1))/2+G1(i,j);

end

end

fori=4:

2:

m;

forj=3:

2:

n-1;

R1(i,j)=(R1(i-1,j)+R1(i+1,j))/2-(G1(i-1,j)+G1(i+1,j))/2+G1(i,j);

end

end

%恢复蓝色分量

fori=3:

2:

m-1

forj=3:

2:

n-1

a=abs(2*(G1(i,j)-G1(i-1,j+1)-G1(i+1,j-1)))+abs(G1(i-1,j+1)-G1(i+1,j-1));

b=abs(2*(G1(i,j)-G1(i-1,j-1)-G1(i+1,j+1)))+abs(G1(i-1,j-1)-G1(i+1,j+1));

ifa

B1(i,j)=(B1(i-1,j+1)+B1(i+1,j-1))/2+(2*G1(i,j)-G1(i-1,j+1)-G1(i+1,j-1))/2;

elseifa>b

B1(i,j)=(B1(i-1,j-1)+B1(i+1,j+1))/2+(2*(G1(i,j)-G1(i-1,j-1)-G1(i+1,j+1)))/2;

else

B1(i,j)=(B1(i-1,j-1)+B1(i-1,j+1)+B1(i+1,j-1)+B1(i+1,j+1))/4+(4*G1(i,j)-G1(i-1,j-1)-G1(i-1,j+1)-G1(i+1,j-1)-G1(i+1,j+1))/4;

end

end

end

end

fori=3:

2:

m-1;

forj=4:

2:

n;

B1(i,j)=(B1(i,j-1)+B1(i,j+1))/2-(G1(i,j-1)+G1(i,j+1))/2+G1(i,j);

end

end

fori=4:

2:

m;

forj=3:

2:

n-1;

B1(i,j)=(B1(i-1,j)+B1(i+1,j))/2-(G1(i-1,j)+G1(i+1,j))/2+G1(i,j);

end

end

X=cat(3,R1,G1,B1);

X=uint8(X);

figure

imshow(X);

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2