图像合成

邻域处理与模板运算

邻点及邻域

图像是由像素构成的。图像中相邻的像素构成邻域,邻域中的像素点互为邻点。以某个像素点(z,2)为中心,处于其上、下、左、右4个方向上的像素点称为它的4 邻点,再加上左上、右上、左下、右下4个方向的点就称为它的8邻点。像素的4 邻点和8 邻点由于与像素直接邻接,因此在邻域处理中较为常用。像素邻点的集合构成了一个像素的邻域。有时,在图像处理中也将中心像素和它的特定邻点合称为邻域。邻域的位置由中心像素决定,大小一般用边长表示。如图给出了包含中心像素在内的3×3邻域和5×5 邻域。

2.邻域处理与模板运算
在图像处理中,邻域处理通常是以包含中心像素在内的邻域为分析对象的。经过邻域处理后得到的像素结果灰度值来源于对邻域内像素的灰度的计算结果。邻域处理能够将像素关联起水,因此广泛应用于图像处理当中。模板,通常也称滤波器(filters)、核(kernels)、掩膜 (templates)或窗口(windows),用-个小的二维阵列来表示(如3×3)。通常把对应的模板上的值称为加权系数模板操作实现了一种邻域运算,即某个像素点的结果不仅和本像素灰度值有关,而且和其邻点的值有关模板运算的数学含义是卷积(或互相关)运算,模板就是卷积运中的卷积核。图像的卷积运算实际是通过模板在图像上的移动完成的,在图像处理中,不断在图像上移动模板的位置,每当模板的中心对准一个像素 ,此像素所在邻域内的每个像素分别与模板中的每-加权系数相乘,乘积求和所得结果即为该像素的滤波输出结果,这样,对图像中的每个邻域依次重复上述过程,直到模板遍历图像中所有可能位置。

但是,对一幅图像进行邻域模板运算的过程中,当模板中心与图像外围像素点重合时•模板的部分行和列可能会处于图像平面之外,没有相应的像素值与模板数据进行运算。对手这种问题,需要采用一定的措施来解决。

假设模板是大小为1Xn 的方形模板,对于图像中行和列方向上距离边缘小于(n-1)/2个像素的形成区城,采用的方法是:
(1)保留该区域中原始像素灰度值不变.
(2)在图像边缘以外再补上(n-1)/2行和(n-1)/2列,对应的灰度值可以补零,也可以将边缘像素灰度值进行复制过来。补充在边缘以外的 这(n-1)/2行和(n-1)/2列在进行模板运算处理后要去除掉

有一幅蝴蝶的图片和一幅风景图片,试基于 MATLAB 编程,基于几何、代数和色彩通道运算,实现漫天蝴蝶飞舞的合成图像。


解:设计思路如下:
对蝴蝶图片进行随机变换后叠加到风景图片上,依次进行的随机变换为三种几何变换、交换两个色彩通道、叠加到风景图片随机位置上。
程序如下:

clear,clc,close all;
Image=imread('butterfly.bmp');
Back=imread('IMG3_13.jpg');
subplot(131),imshow(Image),title('蝴蝶');
subplot(132),imshow(Back),title('背景');
[h w c]=size(Back);
population=20;   %随机产生20只蝴蝶
num=3;    %拟进行几何变化的种类数
for k=1:populationtype=randi(6,1,num);   %在缩小、旋转、三种镜像及错切六种几何变化中随机选择三种NewImage=Image;for n=1:numswitch type(n)case 1     %scale   比例变化scale=rand();   %缩小比例随机生成NewImage=imresize(NewImage,scale,'bilinear');      %缩小变化,双线性插值    case 2    %rotate   旋转变换angle=round(rand()*100);   %逆时针旋转角度随机生成NewImage=imrotate(NewImage,angle,'bilinear');  %旋转变换,双线性插值case 3   %shear  错切变换shear=rand()/2;  %错切系数:0-0.5tform1=maketform('affine',[1 0 0;shear 1 0; 0 0 1]); %maketform()创建一个多维空间变换结构;‘affine’:二维或 N 维仿射变换;‘projective’:二维或 N 维投影变换%‘custom’;用户自定义变换;‘box’:各维独立进行变换的仿射变换;‘composite’:两种或多种变换的复合变换tform2=maketform('affine',[1 shear 0;0 1 0; 0 0 1]);NewImage=imtransform(NewImage,tform1);%根据二维空间变换结构tform1对图像NewImage进行二维空间变换。%‘bicubic’:双立方插值;‘bilinear’:默认值,双线性插值;‘nearest’:最近邻差值%如果NewImage的维数大于 2 (如真彩色图像),则将空间变换结构应用到NewImage中所有的二维矩阵(NewImage(:,:,i))中。NewImage=imtransform(NewImage,tform2);               case 4   %mirroring H  水平镜像NewImage=flipdim(NewImage,2);case 5   %mirroring  V  垂直镜像NewImage=flipdim(NewImage,1);case 6   %mirroring C   对角镜像NewImage=flipdim(NewImage,2);NewImage=flipdim(NewImage,1);% flipdim(X,dim)矩阵翻转变换的函数,其中X表示一个矩阵,dim指定翻转方式,dim为1,表示每一列进行逆序排列,2表示每一行进行逆序排列end          end[newh neww newc]=size(NewImage);positionx=randi(w-2*neww,1,1);   %randi 生成均匀分布的伪随机整数%andi(iMax,m,n)在闭区间[1,iMax]生成mXn型随机矩阵positiony=randi(h-2*newh,1,1);   %叠加位置temp=Back(positiony:positiony+newh-1,positionx:positionx+neww-1,:); colorchange=randi(3,1,2);if colorchange(1)~=colorchange(2)   % 颜色变化color=NewImage(:,:,colorchange(1));NewImage(:,:,colorchange(1))=NewImage(:,:,colorchange(2));NewImage(:,:,colorchange(2))=color;end    %色彩通道交换c=NewImage(:,:,1)&NewImage(:,:,2)&NewImage(:,:,3);pos=find(c(:)==0);  % 找c中值为0的元素位置NewImage(pos)=temp(pos);NewImage(pos+newh*neww)=temp(pos+newh*neww);NewImage(pos+2*newh*neww)=temp(pos+2*newh*neww);  %去除几何变换中产生的背景黑色点temp=NewImage;    Back(positiony:positiony+newh-1,positionx:positionx+neww-1,:)=temp;     %叠加
end
subplot(133),imshow(Back),title('合成图');
imwrite(Back,'hecheng.jpg');

运行结果:

【matlab 图像处理】邻域处理与模板运算相关推荐

  1. MATLAB图像处理学习——图像的像素运算

    目录 1.概述 2.实例 (1)图像点运算 1.线性灰度变换 2.分段线性灰度变换 3.非线性灰度变换 (2)图像代数运算 1.图像加法运算 2.图像的减法运算 3.图像的乘法运算 4.图像的除法运算 ...

  2. 领域平均法matlab代码实验,数字图像处理邻域平均法滤波实验报告matlab实现.doc...

    数字图像处理邻域平均法滤波实验报告matlab实现 数字图像处理 实验报告 实验三 邻域平均法滤波 学号 姓名 实验三 邻域平均法滤波 一.实验内容 选取噪声较明显的图像,分别采用3*3.5*5.7* ...

  3. MATLAB图像处理的开运算和噪声相关的基本操作-填充和去除—imfill与bwareaopen函数运算

    MATLAB图像处理的开运算和噪声相关的基本操作-填充和去除-imfill与bwareaopen函数运算 首先是基本函数的调用格式: imfill函数填充-填充图像区域和孔 该MATLAB函数对像素的 ...

  4. 《Matlab图像处理》part1 Snakes:Active Contour Models 主动轮廓模型

    <Matlab图像处理>part1 Snakes:Active Contour Models 主动轮廓模型 参考博客: 数字图像处理-图像分割:Snake主动轮廓模型 Matlab代码及运 ...

  5. Matlab图像处理基础(2):区域处理,边沿检测

    目录 0. 概要 2. 卷积和相关 2.1 卷积 2.2 相关 2.3 卷积与相关的关系 2.4 Matlab函数 2.5 2-D卷积/相关的分解 3. 高通滤波,edge detection 3.1 ...

  6. 【Matlab 图像处理】图像平滑系统GUI

    图像平滑系统(源码+项目文档+ppt) (1)系统展示 (2)算法描述 1.预处理 首先对图像进行预处理--添加噪声,如:高斯噪声,椒盐噪声,随机噪声 高斯噪声:使用matlab内部提供函数imnoi ...

  7. matlab imfilter与fft,Matlab图像处理图像平滑与滤波

    <Matlab图像处理图像平滑与滤波>由会员分享,可在线阅读,更多相关<Matlab图像处理图像平滑与滤波(7页珍藏版)>请在技术文库上搜索. 1.交换位置,对于矩阵 X,将其 ...

  8. matlab --- 图像处理基础

    MATLAB图像处理 1. 数字图像处理 参考 数字图像处理(Digital Image Processing)又称为计算机图像处理,是一种将图像信号数字化利用计算进行处理的过程.随着计算机科学.电子 ...

  9. 图像处理之图像的像素运算

    一.图像点运算 点运算又称为对比度增强.对比度拉伸或灰度变换,是一种通过图像中的每一个像素值(即像素点上的灰度值)进行运算的图像处理方式.它将输入图像映射为输出图像,输出图像每个像素点的灰度值仅由对应 ...

最新文章

  1. 学会动态丨中国人工智能学会重磅发布《2018人工智能产业创新评估白皮书》
  2. 2018-2020年中国服务机器人行业深度研究报告
  3. 理解Flexbox弹性盒子
  4. 单元测试 python_Python单元测试简介
  5. js遍历数组foreach_JavaScript forEach –如何在JS中遍历数组
  6. 百度语义预训练ERNIE实现物流信息抽取任务
  7. power bi 雷达图_【自助式数据分析平台——WonderBI(豌豆BI)】免费在线试用_软件库...
  8. iOS:fishhook原理分析
  9. win10下装黑苹果双系统_手把手教你轻松安装 Win10/ 黑苹果macOS10.14.1双系统
  10. 【MTSP】遗传和粒子群算法求解多旅行商问题【Matlab 1156期】
  11. ant man 什么意思_man是褒义娘就是贬义么?百雀羚真的敢说
  12. python浙江医院抢号_医院挂号难?抢号秘籍看这里!
  13. 什么是生物特征识别?有哪些生物特征?
  14. 微信小程序使用函数的三种方法
  15. tkinter制作scp命令一键生成器
  16. 操作系统内核Hack:(二)底层编程基础
  17. 解决pprint安装不上 | pprint_一个漂亮的打印机
  18. Mac备份的手机数据位置
  19. 学园狂想曲 出云战记2 Izumo2通关感言
  20. BIM Revit2017下载安装教程及安装包

热门文章

  1. 计网PPT 第四章 网络层
  2. RStudio更新R版本后出现 Error Starting R问题解决
  3. 物联网技术再升级,雄迈安防布线技术首推XPOE,三线合一更实惠
  4. socket网络编程——基于socket通信实现对客户端与服务器间的文件互传
  5. 你是不是也,睡不着?
  6. 刚入职985的他,发了Science!
  7. 【SIM卡】SIM不识别分析处理
  8. 快递企业下一步:国际化、多元化,发展科技提升竞争力
  9. TNFBA治疗强柱达8年的放射学评估
  10. 如果你在寻找投资人……