900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > matlab图像局部放大算法

matlab图像局部放大算法

时间:2021-03-14 00:23:02

相关推荐

matlab图像局部放大算法

此代码可从/TimeIvyace/Partial-Enlargement-of-Image.git中下载

本算法简单的实现了图像局部放大的效果,算法需要确定放大区域的中心坐标点,以及放大圆形区域的半径和放大强度,来进行放大区域内的等比例放大,与美图秀秀的大眼功能类似。以人脸图像放大眼睛为例。在使用机器学习等算法得到人脸68个特征点的基础上,我们可以大致确定眼珠中点的位置。

由此可以大致得到左眼中心点位置为坐标37和40的中点,右眼中心点位置为坐标43和46的中点。接下来,通过设置放大区域半径以及放大强度,则可以实现眼睛放大。

局部放大算法代码:

function J=bigger(I,pointx,pointy,r)%I为原图像,pointx和pointy为放大中心点坐标,r为放大半径im=I;%分别得到放大区域的上下左右坐标left=round(pointy-r);right=round(pointy+r);top=round(pointx-r);bottom=round(pointx+r);%放大区域面积space = r * r;strength=30; %放大强度%原图像为彩色图像,要分成RGB三个分量进行处理fr=im(:,:,1);fg=im(:,:,2);fb=im(:,:,3);im2fr=fr;im2fg=fg;im2fb=fb;%插值算法for x=top:bottomoffsetx=x-pointx;for y=left:rightoffsety=y-pointy;xy=offsetx*offsetx+offsety*offsety;if xy<=space%等比例放大scale=1-xy/space;scale=1-strength/100*scale;%posy和posx为放大后坐标值%采用最近邻插值算法posy=round(offsety*scale+pointy);posx=round(offsetx*scale+pointx);im2fr(x,y)=fr(posx,posy);im2fg(x,y)=fg(posx,posy);im2fb(x,y)=fb(posx,posy);endendend%将RGB三个分量整合,得到彩色图像J=cat(3,im2fr,im2fg,im2fb);

算法没有对图像边界进行判断,若放大区域超出图片范围,则会出错。插值算法使用的是最简单的最近邻算法,所以放大区域边界并不是特别平滑,接下来可以使用更高阶的插值算法进行改进。通过修改放大半径r以及放大强度strength,可以得到一个较为满意的效果。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。