关于纹理合成的Matlab教程
来源:互联网 发布:认证报名保存数据失败 编辑:程序博客网 时间:2024/06/05 02:19
纹理合成的方法如下:给定一个纹理样图,合成一个新的纹理图像,其由人眼观察,该结果产生遵循一定的随机过程。其中需要解决两个关键问题,一是根据有限的纹理样图如果确定随机过程的模型,二是确定模型后如何寻找一种有效的方法产生新的纹理。前者决定产生纹理的准确性,后者决定合成过程的速度。
非参数采样纹理合成-先产生一个大的随机图像,然后对随机图像中每个像素及其邻域像素和小的纹理图像做对比,找出随机图像当前邻域和小的纹理图像最接近的邻域,然后将小的纹理图像最接近的像素赋值给大的随机图像。这样每处理一个随机图像中的像素,就需要遍历小的纹理图像的所有像素,所以运行时间是很慢的。
下面的纹理合成程序就是按照上述原理编写的,给定一副较小的纹理样图(64*64)和一副较大的随机噪声图像(256*256),通过纹理合成,使噪声图像具有和样图类似的纹理。
clear all;
close all;
clc;
mask=mat2gray(imread('wen.jpg')); %小的纹理图像;mat2gray是实现图像矩阵的归一化操作,使矩阵的每个元素的值都在0和1之间(0表示黑色,1表示白色),该函数在数字图像处理中经常用到。
[m n]=size(mask);
imgn=mat2gray(rand(256,256)); %最终需要的大的纹理图像,现在是随机图像
w=2; %L邻域长的半径
I=[1 1 1 1 1;
1 1 1 1;
1 0 0 0]; %L邻域,这里是5*3的,当然也可以是7*4或9*5的
for i=1+w:256
for j=1+w:256-w
mi=inf;
for p=1+w:m
for q=1+w:n-w
tmp=mean2(abs(imgn(i-w:i,j-w:j+w).*I-mask(p-w:p,q-w:q+w).*I));
if tmp<mi %取差别最小的像素
mi=tmp;
ii=p;
jj=q;
end
end
end
imgn(i,j)=mask(ii,jj);
end
end
figure;
imshow(imgn,[]);
- 关于纹理合成的Matlab教程
- MATLAB矩阵的合成。
- 纹理合成
- 图像纹理合成
- 关于粗大的纹理
- 合成地震记录的matlab程序
- matlab-线性代数 矩阵的合成(二维)
- matlab-线性代数 矩阵的合成(三维)
- 关于图片合成的范例
- 关于图片合成的范例
- Tamura纹理特征的matlab实现
- Tamura纹理特征的matlab实现
- OPENCV 第一课 纹理合成
- 关于纹理的一些认识
- 关于纹理炫目的问题
- Matlab图片合成视频
- matlab 图片合成视频
- (iphone/ipad)关于图片合成的范例
- 类名与关键字之间的宏定义
- java集合系列(一)
- 直接插入排序
- LeetCode之Best Time to Buy and Sell Stock
- ubiuntu截屏
- 关于纹理合成的Matlab教程
- linux挂载概念理解
- linux下find指令用法
- JPA-5 使用二级缓存
- 作为一名初学者说说js从零开始面向对象
- 矩阵快速幂求斐波那契数列
- ZOJ
- 作为一名初学者说说js从零开始面向对象
- linux常用命令详解