找回密码
 注册
关于网站域名变更的通知
查看: 731|回复: 3
打印 上一主题 下一主题

基于matlab分形插值算法调换图片

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-7-6 14:06 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

. q9 r: a# c) ]7 ?: Q一、简介  ], D1 p9 y- A4 q9 o: i
1 分形插值是根据分形几何自相似性原理和送代函数系统ifs理论,将已知数据插值成具有自相似结构的曲线或曲面,其中每个局部都与整体自相似或统计自相似,因此,分形插值可以有效地避免传统插值方法对相邻插值点间局部变化特征的掩盖。6 h3 U* H8 W" r( A
绝大多数情况下,图像处理是为了改善图像的视觉质量。因此,如何评价图像的质量是一个十分重要的问题。, u0 I4 D7 |- ?3 P4 P
在图像中,有些像素与相邻像素间灰度值存在突变,即存在灰度不连续性。这些具有灰度值突变的像素就是图像中描述对象的轮廓或纹理图像的边缘像素。在图像放大中,对这些具有不连续灰度特性的像素,如果采用常规的插值算法生成新增加的像素,势会使放大图像的轮廓和纹理模糊,降低图像质量。# S! D- A  P9 S% W. o- b; f
迭代系统函数对于处理规则分形图形有明显的优势,但是对于自然界现象用随机分形处理会更加形象逼真。5 A- {  z$ Y8 J& X) Q* R" a$ |) s% j
2 案例8 m# n7 _5 V9 F2 t# Z6 I
已知人脸和狗脸图片,使用分形插值算法调换图中的人脸和狗脸。
- B1 V# R6 C& _- d) x/ g" x, N 9 _# l& T$ g; i$ G3 q1 I* r

) x) Z4 q5 t, G/ |0 G. W! n& n/ f1 n0 a% T8 r

  a1 y. }& L! A! _0 F: h! ~% }
9 E/ O$ W: t. |/ d: I8 R二、源代码
. |4 U2 [- m* L  P- k9 j5 \$ {/ d" t- H* `3 r' o  k
  • clear all
  • clc
  • function rgbPic = bw2rgb(bwPic)
  • bwPicSize = size(bwPic);
  • rgbPic = zeros(bwPicSize(1),bwPicSize(2),3);
  • I = imread('people.png');
  • I2 = imread('dog.png');
  • doge = imresize(I2,[size(I,1) size(I,2)]);
  • gray = rgb2gray(I);
  • YCbCr = rgb2ycbcr(I);
  • heigth = size(gray,1);
  • width = size(gray,2);
  • for i = 1:heigth
  •     for j = 1:width
  •         Y = YCbCr(i,j,1);
  •         Cb = YCbCr(i,j,2);
  •         Cr = YCbCr(i,j,3);
  •         if(Y < 80)
  •             gray(i,j) = 0;
  •         else
  •             if(skin(Y,Cb,Cr) == 1)
  •                 gray(i,j) = 255;
  •             else
  •                 gray(i,j) = 0;
  •             end
  •         end
  •     end
  • end
  • SE=strel('arbitrary',eye(5));
  • gray = imopen(gray,SE);
  • gray = imclose(gray,SE);
  • a1=(255-bw2rgb(gray))/255;
  • next1=immultiply(I,a1);
  • a2=bw2rgb(gray)/255;
  • next2=immultiply(doge,a2);
  • add=imadd(next1,next2);
  • [L,num] = bwlabel(gray,8);
  • STATS = regionprops(L,'BoundingBox');
  • n = 1;
  • result = zeros(n,4);
  • part = zeros(h,w);
  • for i = y:(y+h)
  •     for j = x:(x+w)
  •         if bImage(i,j) == 0
  •             part(i-y+1,j-x+1) = 255;
  •         else
  •             part(i-y+1,j-x+1) = 0;
  •         end
  •     end
  • end2 ~6 k( k7 G9 `: n, X
      
3 z2 V9 j( |3 X6 b4 B
2 z% o: V0 a0 F8 K$ B1 j# V9 R: }' j( n
$ _/ l7 ^% c7 x三、运行结果
# m& }* u8 L7 N% b; J1 x
1 i- s9 E: O- Y7 p! M4 L8 _7 o% F

) b& O/ ^' O; E8 @. E0 U6 t; o5 D

该用户从未签到

2#
发表于 2021-7-6 16:14 | 只看该作者
基于matlab分形插值算法调换图片

该用户从未签到

3#
发表于 2021-7-6 16:16 | 只看该作者
基于matlab分形插值算法调换图片

该用户从未签到

4#
发表于 2021-7-6 16:16 | 只看该作者
基于matlab分形插值算法调换图片
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-10 03:21 , Processed in 0.093750 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表