|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
, ~4 b8 V6 B: b" w* ]( L- M& E" {一、简介* O" ~. v7 {1 E
1 分形插值是根据分形几何自相似性原理和送代函数系统ifs理论,将已知数据插值成具有自相似结构的曲线或曲面,其中每个局部都与整体自相似或统计自相似,因此,分形插值可以有效地避免传统插值方法对相邻插值点间局部变化特征的掩盖。2 M9 R* c, P q& h/ l
绝大多数情况下,图像处理是为了改善图像的视觉质量。因此,如何评价图像的质量是一个十分重要的问题。0 ^2 v+ r8 W# ]3 f- o' ?6 f( Q
在图像中,有些像素与相邻像素间灰度值存在突变,即存在灰度不连续性。这些具有灰度值突变的像素就是图像中描述对象的轮廓或纹理图像的边缘像素。在图像放大中,对这些具有不连续灰度特性的像素,如果采用常规的插值算法生成新增加的像素,势会使放大图像的轮廓和纹理模糊,降低图像质量。
. y$ @1 t( \& N& y+ e$ q5 \/ u迭代系统函数对于处理规则分形图形有明显的优势,但是对于自然界现象用随机分形处理会更加形象逼真。
9 `+ p3 \" J; }! q' k/ N2 案例: Z6 ^, K: K4 q7 R0 W* L4 M
已知人脸和狗脸图片,使用分形插值算法调换图中的人脸和狗脸。
/ J1 k! E- J6 z: { W+ r
2 }1 l @; C+ [
5 @- @5 G+ @& i+ N8 }
$ v& I5 z: B* V0 f1 W( M
9 Y% j7 t. Z+ ^$ f2 R
( B$ {& o# ?; r+ a二、源代码$ `7 ~! u3 v6 U' ]7 v: ^
7 V; M- u; u9 B6 C- 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
- end3 q0 j l% P7 H$ n
' t0 E; b, z$ r0 `8 `. \/ v8 D( I( e- F+ y. p" k4 p v4 m; t: r* S
, j7 ?8 R, u( W
三、运行结果# ~' a/ W+ T# [( P( F5 e
# l1 x: l! c6 `! q6 ~' v2 f7 l6 m6 ?
& ^* s" v+ K1 G9 {" E
9 x- U& f4 U. f7 g" l
|
|