当前位置:文档之家› MATLAB实现RGB图像的平移、缩放和旋转

MATLAB实现RGB图像的平移、缩放和旋转

MATLAB实现RGB图像的平移、缩放和旋转
MATLAB实现RGB图像的平移、缩放和旋转

Func的1 2 3分别对应平移、旋转、缩放功能

function []=transition(func,I)

if func==1

delta_x=str2double(inputdlg('请输入向右平移量', 'INPUT scale factor', 1, {'-60'})); %负数为向左

delta_y=str2double(inputdlg('请输入向下平移量', 'INPUT scale factor', 1, {'-89'})); %负数为向上

img=imread(I);%读入图像

B=size(img); %获取原始图像的高和宽

imgn(:,:,:)=zeros(B(1)+abs(delta_y),B(2)+abs(delta_x));%创建平移图像输出矩阵

rot=[1 0 0;0 1 0;delta_y delta_x 1]; %寻求新坐标用到的平移矩阵

pix1=[1 1 1]*rot; %pix1(1),pix1(2)分别为变换后图像的左上角的y,x,分别为1+delta_y,1+delta_x,这种三维空间坐标被称为齐次坐标表示法

pix4=[B(1) B(2) 1]*rot; %pix4(1),pix4(2)分别为变换后图像的右下角的y,x,分别为v+delta_y,u+delta_x

for q=1:3 %为每个通道做相同处理

%%向右下方移动

if delta_x>=0 && delta_y>=0 %如果两个平移量都为正

for y=pix1(1):pix4(1) %新图像纵坐标从最开始到结束处

for x=pix1(2):pix4(2) %新图像横坐标从最开始到结束处

pix=[y x 1]/rot; %pix矩阵经计算后为[y-delta_y,x-delta_x,1] if pix(1)>=0.5 && pix(2)>=0.5 && pix(1)<=B(1) && pix(2)<=B(2)%这里是判断是否有像素可进行平移,例如:若y-delta_y<0.5,则说明没有找到可平移的像素坐标

imgn(y,x,q)=img(round(pix(1)),round(pix(2)),q); %新的图像(x,y)点的像素值选取(x-delta_x,y-delta_y)处的像素值,则实现了平移

end

end

end

end

%%向左下方移动

if delta_x<0 && delta_y>=0

for y=pix1(1):pix4(1)

for x=pix1(2):pix4(2)

pix=[y x 1]/rot;

if pix(1)>=0.5 && pix(2)>=0.5 && pix(1)<=B(1) && pix(2)<=B(2)

imgn(y,x-delta_x,q)=img(round(pix(1)),round(pix(2)),q);

end

end

end

end

%%向左上方移动

if delta_x<0 && delta_y<0

for y=pix1(1):pix4(1)

for x=pix1(2):pix4(2)

pix=[y x 1]/rot;

if pix(1)>=0.5 && pix(2)>=0.5 && pix(1)<=B(1) && pix(2)<=B(2)

imgn(y-delta_y,x-delta_x,q)=img(round(pix(1)),round(pix(2)),q);

end

end

end

end

%%向右上方移动

if delta_x>=0 && delta_y<0

for y=pix1(1):pix4(1)

for x=pix1(2):pix4(2)

pix=[y x 1]/rot;

if pix(1)>=0.5 && pix(2)>=0.5 && pix(1)<=B(1) && pix(2)<=B(2)

imgn(y-delta_y,x,q)=img(round(pix(1)),round(pix(2)),q);

end

end

end

end

end

imshow(uint8(imgn));

title('平移');

end

if func==2

img=imread(I); %读入原图像

B=size(img);%获取图像的高度和宽度

K1 =str2double(inputdlg('请输入列缩放倍数', 'INPUT scale factor', 1, {'0.5'}));%行默认变为原来的0.5倍

K2 =str2double(inputdlg('请输入行缩放倍数', 'INPUT scale factor', 1, {'0.5'}));%列默认变为原来的0.5倍

width = K1 * B(1); %缩放后的图像宽度

height = K2 * B(2); %缩放后的图像高度

for p=1:3

imgn(:,:,p) = uint8(zeros(round(width),round(height))); %创建输出图像矩阵,round是进行数值取整

end

widthScale = B(1)/width; %列缩放倍数的倒数

heightScale = B(2)/height;%行缩放倍数的倒数

for q=1:3

for x = 5:width - 5 % 5是为了防止矩阵超出边界溢出for y = 5:height - 5

oldX = x * widthScale; % oldX,oldY为原坐标,x,y为新坐标

oldY = y * heightScale;

if(oldX/double(uint16(oldX)) == 1.0) && (oldY/double(uint16(oldY)) == 1.0) %判断oldx,oldy是否为整数

imgn(x,y,q) = img(int16(oldX),int16(oldY),q);

else

a = double(round(oldX));

b = double(round(oldY)); %若不是整数四舍五入后把临近值赋过去

imgn(x,y,q) = img(a,b,q);

end

end

end

end

imshow(imgn);

title('最邻近插值缩放');

end

if func==3

H=1; %索引pix中第一个元素,即高度

W=2; %索引pix中第二个元素,即宽度

angle=str2double(inputdlg('请输入旋转角度', 'INPUT scale factor', 1, {'45'})); %要旋转的角度,旋转方向为顺时针

img=imread(I); %这里v为原图像的高度,u为原图像的宽度

B=size(img); %读入高度和宽度

theta=angle/180*pi; %将角度单位换算成弧度单位

rot=[cos(theta) -sin(theta) 0;sin(theta) cos(theta) 0;0 0 1]; %寻求坐标所用到的旋转矩阵

pix1=[1 1 1]*rot; %变换后图像左上点的坐标

pix2=[1 B(2) 1]*rot; %变换后图像右上点的坐标

pix3=[B(1) 1 1]*rot; %变换后图像左下点的坐标

pix4=[B(1) B(2) 1]*rot; %变换后图像右下点的坐标

height=round(max([abs(pix1(H)-pix4(H))+0.5 abs(pix2(H)-pix3(H))+0.5])); %变换后图像的高度,为避免溢出要加上0.5,相当于进一法

width=round(max([abs(pix1(W)-pix4(W))+0.5 abs(pix2(W)-pix3(W))+0.5])); %变换后图像的宽度

for p=1:3

imgn(:,:,p)=zeros(height,width); %创建图像输出矩阵

end

delta_y=abs(min([pix1(H) pix2(H) pix3(H) pix4(H)])); %取得y方向的负轴超出的偏移量(Y轴坐标是向下的)

delta_x=abs(min([pix1(W) pix2(W) pix3(W) pix4(W)]));%取得x方向的负轴超出的偏移量

for q=1:3

for y=1-delta_y:height-delta_y

for x=1-delta_x:width-delta_x

pix=[y x 1]/rot;

if pix(H)>=0.5 && pix(W)>=0.5 && pix(H)<=B(1) && pix(W)<=B(2)

imgn(y+delta_y,x+delta_x,q)=img(round(pix(H)),round(pix(W)),q);

end

end

end

end

imshow(uint8(imgn));

title('最近邻插值旋转');

end

基于Matlab基本图像处理程序

图像读入 ●从图形文件中读入图像 imread Syntax: A = imread(filename, fmt) filename:指定的灰度或彩色图像文件的完整路径和文件名。 fmt:指定图形文件的格式所对应的标准扩展名。如果imread没有找到filename所制定的文件,会尝试查找一个名为filename.fmt的文件。 A:包含图像矩阵的矩阵。对于灰度图像,它是一个M行N列的矩阵。如果文件包含 RGB真彩图像,则是m*n*3的矩阵。 ●对于索引图像,格式[X, map] = imread(filename, fmt) X:图像数据矩阵。 MAP:颜色索引表 图像的显示 ●imshow函数:显示工作区或图像文件中的图像 ●Syntax: imshow(I) %I是要现实的灰度图像矩阵 imshow(I,[low high],param1, val1, param2, val2,...) %I是要现实的灰度图像矩阵,指定要显示的灰度范围,后面的参数指定显示图像的特定参数 imshow(RGB) imshow(BW) imshow(X,map) %map颜色索引表 imshow(filename) himage = imshow(...) ●操作:读取并显示图像 I=imread('C:\Users\fanjinfei\Desktop\baby.bmp');%读取图像数据 imshow(I);%显示原图像 图像增强 一.图像的全局描述 直方图(Histogram):是一种对数据分布情况的图形表示,是一种二维统计图表,它的两个坐标分别是统计样本和该样本对应的某个属性的度量。 图像直方图(Image Histogram):是表示数字图像中亮度分布的直方图,用来描述图象灰度值,标绘了图像中每个亮度值的像素数。 灰度直方图:是灰度级的函数,它表示图像中具有某种灰度级的像素的个数,反映了图 像中某种灰度出现的频率。描述了一幅图像的灰度级统计信息。是一个二维图,横坐标为图像中各个像素点的灰度级别,纵坐标表示具有各个灰度级别的像素在图像中出现的次数或概率。 归一化直方图:直接反应不同灰度级出现的比率。纵坐标表示具有各个灰度级别的像

数字图像平滑滤波在MATLAB上的实现

第 5 章图像平滑滤波在MATLAB上的实现 本课程设计在MATLAB上实现的程序和结果 I=imread('b.bmp'); v=0.5*ones(size(I)); I1=imnoise(I,'localvar',v); I2=imnoise(I,'salt & pepper',0.02); I3=imnoise(I,'speckle',0.02); figure; subplot(221); hold on; title('原图像'); imshow(I); hold off; subplot(222); hold on; title('受高斯噪声污染的图像'); imshow(I1); hold off; subplot(223); hold on; title('受椒盐噪声污染的图像'); imshow(I2); hold off; subplot(224); hold on; title('受乘性噪声污染的图像'); imshow(I3); hold off;

原图像受高斯噪声污染的图像 受椒盐噪声污染的图像受乘性噪声污染的图像 h=ones(3,3)/9; J1=imfilter(I1,h); J2=imfilter(I2,h); J3=imfilter(I3,h); figure; subplot(221); hold on; title('原图像'); imshow(I); hold off; subplot(222); hold on; title('对有高斯噪声的3*3邻域平均后的图像'); imshow(J1); hold off; subplot(223); hold on; title('对有椒盐噪声的3*3邻域平均后的图像'); imshow(J2); hold off; subplot(224); hold on; title('对有乘性噪声的3*3邻域平均后的图像'); imshow(J3);

MATLAB实现频域平滑滤波以及图像去噪代码

用MATLAB实现频域平滑滤波以及图像去噪代码 悬赏分:50 - 解决时间:2008-11-8 14:21 是数字图象处理的实验,麻烦高人给个写好的代码,希望能在重要语句后面附上一定的说明,只要能在MATLAB上运行成功,必然给分。具体的实验指导书上的要求如下: 频域平滑滤波实验步骤 1. 打开Matlab 编程环境;

2. 利用’imread’函数读入图像数据; 3. 利用’imshow’显示所读入的图像数据; 4. 将图像数据由’uint8’格式转换为’double’格式,并将各点数据乘以 (-1)x+y 以便FFT 变换后的结果中低频数据处于图像中央; 5. 用’fft2’函数对图像数据进行二维FFT 变换,得到频率域图像数据; 6. 计算频率域图像的幅值并进行对数变换,利用’imshow’显示频率域图 像; 7. 在频率图像上去除滤波半径以外的数据(置0); 8. 计算频率域图像的幅值并进行对数变换,利用’imshow’显示处理过的 频域图像数据; 9. 用’ifft2’函数对图像数据进行二维FFT 逆变换,并用’real’函数取其实部,得到处理过的空间域图像数据; 10. 将图像数据各点数据乘以(-1)x+y; 11. 利用’imshow’显示处理结果图像数据; 12. 利用’imwrite’函数保存图像处理结果数据。 图像去噪实验步骤: 1. 打开Matlab 编程环境; 2. 利用’imread’函数读入包含噪声的原始图像数据; 3. 利用’imshow’显示所读入的图像数据; 4. 以3X3 大小为处理掩模,编写代码实现中值滤波算法,并对原始噪声 图像进行滤波处理; 5. 利用’imshow’显示处理结果图像数据; 6. 利用’imwrite’函数保存图像处理结果数据。 即使不是按这些步骤来的也没关系,只要是那个功能,能实现就OK,谢谢大家 %%%%%%%%spatial frequency (SF) filtering by low pass filter%%%%%%%% % the SF filter is unselective to orientation (doughnut-shaped in the SF % domain). [FileName,PathName,FilterIndex] = uigetfile ; filename = fullfile(PathName, FileName) ; [X map] = imread(filename, fmt); % read image L = double(X); % transform to double %%%%%%%%%%%%% need to add (-1)x+y to L % calculate the number of points for FFT (power of 2) fftsize = 2 .^ ceil(log2(size(L))); % 2d fft Y = fft2(X, fftsize(1), fftsize (2));

(完整版)数字图像处理MATLAB程序【完整版】

第一部分数字图像处理

实验一图像的点运算 实验1.1 直方图 一.实验目的 1.熟悉matlab图像处理工具箱及直方图函数的使用; 2.理解和掌握直方图原理和方法; 二.实验设备 1.PC机一台; 2.软件matlab。 三.程序设计 在matlab环境中,程序首先读取图像,然后调用直方图函数,设置相关参数,再输出处理后的图像。 I=imread('cameraman.tif');%读取图像 subplot(1,2,1),imshow(I) %输出图像 title('原始图像') %在原始图像中加标题 subplot(1,2,2),imhist(I) %输出原图直方图 title('原始图像直方图') %在原图直方图上加标题 四.实验步骤 1. 启动matlab 双击桌面matlab图标启动matlab环境; 2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像, 如:cameraman图像;再调用相应的直方图函数,设置参数;最后输出处理后的图像; 3.浏览源程序并理解含义; 4.运行,观察显示结果; 5.结束运行,退出; 五.实验结果 观察图像matlab环境下的直方图分布。 (a)原始图像 (b)原始图像直方图 六.实验报告要求 1、给出实验原理过程及实现代码; 2、输入一幅灰度图像,给出其灰度直方图结果,并进行灰度直方图分布原理分析。

实验1.2 灰度均衡 一.实验目的 1.熟悉matlab图像处理工具箱中灰度均衡函数的使用; 2.理解和掌握灰度均衡原理和实现方法; 二.实验设备 1.PC机一台; 2.软件matlab; 三.程序设计 在matlab环境中,程序首先读取图像,然后调用灰度均衡函数,设置相关参数,再输出处理后的图像。 I=imread('cameraman.tif');%读取图像 subplot(2,2,1),imshow(I) %输出图像 title('原始图像') %在原始图像中加标题 subplot(2,2,3),imhist(I) %输出原图直方图 title('原始图像直方图') %在原图直方图上加标题 a=histeq(I,256); %直方图均衡化,灰度级为256 subplot(2,2,2),imshow(a) %输出均衡化后图像 title('均衡化后图像') %在均衡化后图像中加标题 subplot(2,2,4),imhist(a) %输出均衡化后直方图 title('均衡化后图像直方图') %在均衡化后直方图上加标题 四.实验步骤 1. 启动matlab 双击桌面matlab图标启动matlab环境; 2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像, 如:cameraman图像;再调用相应的灰度均衡函数,设置参数;最后输出处理后的图像; 3.浏览源程序并理解含义; 4.运行,观察显示结果; 5.结束运行,退出; 五.实验结果 观察matlab环境下图像灰度均衡结果及直方图分布。 (a)原始图像 (b)均衡化后图像

图像平滑方法综述与MATLAB实现之欧阳家百创编

江苏科技大学 数字图像处理本科生课程论文 论文题目:图像平滑方法综述与MATLAB实现完成时间:11月20日 所在专业:信息与计算科学

图像平滑方法综述与MATLAB实现 摘要:在图像的生成、传输或变换的过程中,由于多种因素的影响,总要造成图像质量的下降,这就需要进行图像增强。随着图像处理领域的迅速发展,图像平滑作为图像增强的重要环节,也逐渐受到人们的关注。图像平滑的目的为了消除噪声。图像平滑可以在空间域进行,也可以在频率域进行。空间域常用的方法有领域平均法、中值滤波和多图像平均法;在频率域,因为噪声频谱多在高频段,因此可以采用各种形式的低通滤波方法进行平滑处理。 关键词:图像平滑;消除噪声;领域平均法;中值滤波;低通滤波法……… 1 研究背景 总所周知,实际获得的图像在形成、传输接收和处理的过程中,不可避免地存在着外部干扰和内部干扰,如光电转换过程中敏感元件灵敏度的不均匀性、数字化过程中的量化噪声、传输过程中的误差以及人为因素等,均会使图像质量变差,需要进行图像的平滑处理。 图像平滑是一种实用的熟悉图像处理技术,一个较好的平滑处理方法应该既能消除图像噪声,又不使图像边缘轮廓和线条变模糊,这就是研究数字图形平滑处理要追求的目标。 2.主要理论概况 2.1 邻域平均法 邻域平均法就是对含噪声的原始图像的每一个像素点取一个邻域,计算中所有像素灰度级的平均值,作为邻域平均处理后的图像的像素值。即 式中, ),为邻域中像素的点数。

是预先设定的阈值,当某些点的灰度值与其邻域点灰度平均值之差不超过阈值式中, 时,仍保留这些点的灰度值。当某些点的灰度值与其邻点灰度的均值差别较大时,这些点必然是噪声,这时再取其邻域平均值作为这些点的灰度点。这样平滑后的图像比单纯的进行邻域平均后的图像要清晰一些,平滑效果仍然很好。 2.2 中值滤波 中值滤波是一种非线性处理技术,由于它在实际运算过程中并不需要知道图像的统计特性,所以比较方便。中值滤波最初是应用在一维信号处理技术中,后来被二维的图像处理技术所引用。在一定条件下,中值滤波可以克服线性滤波器所带来的图像细节模糊,而且对滤波除脉干扰及图像扫描噪声非常有效。但是对一些细节多,特别是点、线、尖顶较多的图像则不宜采用中值滤波的方法。中值滤波的目的是保护图像边缘的同时去除噪声。 2.2.1 中值滤波的主要原理 中值滤波实际上就是用一个含有奇数个像素的滑动窗口,将窗口正中点的灰度值用窗口内各点的中值代替。例如若窗口长度为5,窗口中像素的灰度值分别为80、90、200、110、120,则中值为110,于是原来窗口正中的200就由110代替。 设有一个一维序列,用窗口长度为m(m为奇数)的窗口对该序列进行中值 滤波,就是从序列中相继抽出m 个数其中为窗口中心值,,再将这m个点的值按其数值大小排列,取其序号为正中间的那个值作为滤波器的输出。用数学公式可表示为 对二维序列进行中值滤波时,滤波窗口也是二维的,只不过这种二维窗口可以有各种不同的形状,如线状、方形,圆形、十字形和圆环形等。二维数据的中值滤波可以表示为 A为窗口

图像处理matlab程序实例

程序实例 1旋转: x=imread('d:\MATLAB7\work\flower.jpg'); y=imrotate(x,200,'bilinear','crop'); subplot(1,2,1); imshow(x); subplot(1,2,2); imshow(y) 2.图像的rgb clear [x,map]=imread('D:\Program Files\MATLAB\R2012a\bin\shaohaihe\shh1.jpg');y=x(90:95,90:95);imshow(y)R=x(90:95,90:95,1);G=x(90:95,90:95,2);B=x(90:95,90:95,3);R,G,B 3.加法运算clear I=imread('D:\Program Files\MATLAB\R2012a\bin\shaohaihe\shh3.jpg');J=imnoise(I,'gaussian',0,0.02);%向图片加入高斯噪声subplot(1,2,1),imshow(I);%显示图片subplot(1,2,2),imshow(J);K=zeros(242,308);%产生全零的矩阵,大小与图片的大小一样for i=1:100%循环100加入噪声J=imnoise(I,'gaussian',0,0.02);J1=im2double(J);K=K+J1;end K=K/100; figure,imshow(K);save

4.减法 clear I=imread('D:\Program Files\MATLAB\R2012a\bin\shaohaihe\shao.jpg'); J=imread('D:\Program Files\MATLAB\R2012a\bin\shaohaihe\shao1.jpg'); K=imsubtract(I,J);%实现两幅图相减 K1=255-K;%将图片求反显示 figure;imshow(I); title('有噪声的图'); figure;imshow(J); title('原图'); figure;imshow(K1); title('提取的噪声'); save 5.图像的乘法 H=imread('D:\Program Files\MATLAB\R2012a\bin\shaohaihe\shao.jpg'); I=immultiply(H,1.2);将此图片乘以1.2 J=immultiply(H,2); subplot(1,3,1),imshow(H); title('原图'); subplot(1,3,2),imshow(I); title('·放大1.2'); subplot(1,3,3),imshow(J); title('放大2倍'); 6除法运算 moon=imread('moon.tif'); I=double(moon); J=I*0.43+90; K=I*0.1+90; L=I*0.01+90; moon2=uint8(J); moon3=uint8(K); moon4=uint8(L); J=imdivide(moon,moon2); K=imdivide(moon,moon3); L=imdivide(moon,moon4); subplot(2,2,1),imshow(moon); subplot(2,2,2),imshow(J,[]); subplot(2,2,3),imshow(K,[]); subplot(2,2,4),imshow(L,[]);

图像边缘检测各种算子MATLAB实现以及实际应用

《图像处理中的数学方法》实验报告 学生姓名:赵芳舟 教师姓名:曾理 学院:数学与统计学院 专业:信息与计算科学 学号: 联系方式: 梯度和拉普拉斯算子在图像边缘检测中的应用

一、数学方法 边缘检测最通用的方法是检测灰度值的不连续性,这种不连续性用一阶和二阶导数来检测。 1.(1)一阶导数:一阶导数即为梯度,对于平面上的图像来说,我们只需用到二维函数 的梯度,即:,该向量的幅值: ,为简化计算,省略上式平方根,得到近似值;或通过取绝对值来近似,得到:。 (2)二阶导数:二阶导数通常用拉普拉斯算子来计算,由二阶微分构成: 2.边缘检测的基本思想: (1)寻找灰度的一阶导数的幅度大于某个指定阈值的位置; (2)寻找灰度的二阶导数有零交叉的位置。 3.几种方法简介 (1)Sobel边缘检测器:以差分来代替一阶导数。Sobel边缘检测器使用一个3×3邻域的行和列之间的离散差来计算梯度,其中,每行或每列的中心像素用2来 加权,以提供平滑效果。 -1-21 000 121 -101 -202 -101

(2)Prewitt边缘检测器:使用下图所示模板来数字化地近似一阶导数。与Sobel检测器相比,计算上简单一些,但产生的结果中噪声可能会稍微大一些。 -1-1-1 000 111 -101 -101 -101 (3)Roberts边缘检测器:使用下图所示模板来数字化地将一阶导数近似为相邻像素之间的差,它与前述检测器相比功能有限(非对称,且不能检测多种45°倍数的边缘)。 -10 01 0-1 10 (4)Laplace边缘检测器:二维函数的拉普拉斯是一个二阶的微分定义: 010 1-41 010

图像运算的MATLAB实现

rice=imread(‘rice.png’); % 读入图像 I=double(rice); % 数据类型转换 J=I*0.43+60; % 像素点算术运算 rice2=uint8(J) % 数据类型转换subplot(1,2,1),imshow(rice); % 原图绘制subplot(1,2,2),imshow(rice2); % 计算后图像绘制

X = uint8([ 255 10 75; 44 225 100]); Y = uint8([ 50 20 50; 50 50 50 ]); Z = imdivide(X,Y)

I = imread('rice.png'); % 读入图像background = imopen(I,strel('disk',15)); % 图像开运算Ip = imdivide(I,background); % 图像除法运算imshow(Ip,[]) % 显示运算后的图像

I = imread('rice.png'); % 读入图像 J = imdivide(I,2); % 图像除以一个常数subplot(1,2,1), imshow(I) % 显示原始图像subplot(1,2,2), imshow(J) % 显示运算后的图像

I = imread('cameraman.tif'); % 读入图像J = imlincomb(2,I); % 灰度值放大imshow(J) % 显示运算后的图像

I = imread('cameraman.tif'); % 读入图像 J = uint8(filter2(fspecial('gaussian'), I)); % 图像滤波 K = imlincomb(1,I,-1,J,128); % K(r,c) = I(r,c) - J(r,c) + 128 % 图像相减后加上一个常数figure, imshow(K) % 显示运算后的图像

图像平滑的matlab实现论文

图像平滑的Matlab实现 20101602310035 黄汉杰 摘要 随着图像处理领域的迅速发展,图像平滑作为图像处理中的重要环节,也逐渐受到人们的关注。图像平滑的目的主要是消除噪声。图像平滑方法按空间域和频率域的分类及各种方法的特点,图像平滑是对图像作低通滤波,可在空间域或频率域实现。空间域图像平滑方法主要用均值滤波、中值滤波等;频率域图像平滑常用的低通滤波器有理想低通滤波器、布特沃斯低通滤波器、低通指数滤波器、低通梯形滤波器等。 关键词:图像平滑;噪声;空间域低通滤波;频域低通滤波 引言: (1)在图像的获取和传输过程中原始图像会受到各种噪声的干扰,使图像质量下降。为了抑制噪声、改善图像质量,要对图像进行平滑处理。抑制或消除这些噪声而改善图像质量的过程称为图像的平滑。图像平滑的目的是为了消除噪声。噪声消除的方法又可以分为空间域或频率域,亦可以分为全局处理或局部处理,亦可以按线性平滑、非线性平滑和自适应平滑来区别。图像的平滑是一种实用的数字图像处理技术,一个较好的平滑处理方法应该既能消除图像噪声,又不使图像边缘轮廓和线条变模糊,这就是研究数字图像平滑处理要追求的目标。一般情况下,减少噪声的方法可以在空间域或频率域进行处理,主要有邻域平均法、中值滤波法、低通滤波法等,邻域平均法即通过提高信噪比,取得较好的平滑效果;空间域低通滤波采用低通滤波的方法去除噪声;以及频域低通滤波法通过除去其高频分量就能去掉噪声,从而使图像得到平滑。 (2)本设计将对图像平滑处理的两大方面即空间域和频率域,以及两种处理

方向里的几种处理方法进行介绍,并对一些常用的简单平滑算法进行分析。 (3)图像平滑主要是为了消除被污染图像中的噪声,这是遥感图像处理研究的最基本内容之一,被广泛应用于图像显示、传输、分析、动画制作、媒体合成等多个方面。该技术是出于人类视觉系统的生理接受特点而设计的一种改善图像质量的方法。处理对象是在图像生成、传输、处理、显示等过程中受到多种因素扰动形成的加噪图像。在图像处理体系中,图像平滑是图像复原技术针对“一幅图像中唯一存在的退化是噪声”时的特例。 1.论文目的 1.1 通过几种图像平滑的方法,实现被噪声污染过的图像的平滑处理,其中包括空间域和频率域; 1.2 在加深对数字图像处理课本知识理解的基础上,学会运用已学的知识对图像 平滑的处理方法的结果进行分析。 2.理论及方案 (1)图像噪声来源及类型 一幅图像在获取和传输等过程中,会受到各种各样噪声的干扰,其主要来源有三:一为在光电、电磁转换过程中引入的人为噪声;二为大气层电(磁)暴、闪电、电压、浪涌等引起的强脉冲性冲激噪声的干扰;三为自然起伏性噪声,由物理量的不连续性或粒子性所引起,这类噪声又可分成热噪声、散粒噪声等。一般在图像处理技术中常见的噪声有:加性噪声、乘性噪声、量化噪声、“盐和胡椒”噪声等。下面介绍两种主要的噪声。 2.1.1、高斯噪声(Gaussian noise) 这种噪声主要来源于电子电路噪声和低照明度或高温带来的传感器噪声,也

基本数字(精选)图像处理算法的matlab实现

基本数字图像处理算法的matlab实现 1.数字图像处理的简单介绍 所谓数字图像就是把传统图像的画面分割成为像素的小的离散点,各像素的灰度值也是用离散值来表示的。 数字图像处理是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。 2.图像的显示与运算 2.1图像的显示 Matlab显示语句 imshow(I,[lowhigh])%图像正常显示 I为要显示的图像矩阵。,[lowhigh]为指定显示灰度图像的灰度范围。高于high的像素被显示成白色;低于low的像素被显示成黑色;介于high和low之间的像素被按比例拉伸后显示为各种等级的灰色。 subplot(m,n,p) 打开一个有m行n列图像位置的窗口,并将焦点位于第p个位置上。 2.2图像的运算 灰度化将彩色图像转化成为灰度图像的过程成为图像的灰度化处理。彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围。而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其一个像素点的变化范围为255种,所以在数字图像处理种一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些。灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。图像的灰度化处理可用两种方法来实现。

第一种方法使求出每个像素点的R、G、B三个分量的平均值,然后将这个平均值赋予给这个像素的三个分量。 第二种方法是根据YUV的颜色空间中,Y的分量的物理意义是点的亮度,由该值反映亮度等级,根据RGB和YUV颜色空间的变化关系可建立亮度Y与R、G、B三个颜色分量的对应:Y=0.3R+0.59G+0.11B,以这个亮度值表达图像的灰度值。 灰度是灰度级的函数,它表示图象中具有每种灰度级的象素的个数,反映图象中每种灰度出现的频率。 图像增强的目标是改进图片的质量,例如增加对比度,去掉模糊和噪声,修正几何畸变等;图像复原是在假定已知模糊或噪声的模型时,试图估计原图像的一种技术。 Matlab图像格式转换语句 rgb2gray(I) %从RGB图创建灰度图 imhist(I) %画灰度直方图 图像的线性变换 D B=f(D A)=f A*D A+f B Matlab源代码: I1=imread('F:\图片2.jpg'); subplot(2,2,1);imshow(I1);title('原图'); I2=rgb2gray(I1); %灰度化图像 subplot(2,2,2);imshow(I2);title('灰度化后图'); [M,N]=size(I2); subplot(2,2,3) [counts,x]=imhist(I2,60); %画灰度直方图 counts=counts/M/N; stem(x,counts);title('灰度直方图'); g=zeros(M,N);%图像增强

图像平滑的MATLAB实现

图像平滑的MATLAB实现 摘要:图像平滑技术用于平滑图像的噪声,本文对均值滤波、中值滤波、维纳滤波等三种平滑滤波器 进行理论学习,并通过MATLAB对滤波效果进行仿真。 关键词:图像平滑均值滤波中值滤波维纳滤波 实际获得的图像一般都因受到某种干扰而含有噪声。引起噪声的原因有敏感元器件的内部噪声、照相底片上感光材料的颗粒、传输通道的干扰及量化噪声等。噪声产生的原因决定了噪声的分布特性及它和图像信号的关系。根据噪声服从的分布,可以分为高斯噪声、泊松噪声和颗粒噪声等。平滑技术用于平滑图像的噪声,平滑噪声可以在空间域中进行,基本方法是求像素灰度的平均值或中值。为了既平滑噪声又保护图像信号,也有一些改进的技术,比如在频域中运用低通滤波器。 MATLAB图像处理工具箱提供了模拟噪声生成的函数imnoise和去除噪声的方法。函数imnoise可以对图像添加一些典型的噪声。由于噪声的随机性,它们对某一像点的影响使其灰度和邻点的灰度显著不同,因此可以利用这种不同来消除噪声。去除噪声的方法有线性滤波、中值滤波、自适应滤波。本文就针对上述三种平滑滤波进行MATLAB仿真。 1 图像平滑的MATLAB实现 1.1 均值滤波[1] 1.1.1理论基础 邻域平均法是空间域平滑噪声技术,其均值滤波器对于扫描得到的图像中的颗粒噪声非常适用,理论依据如下: 对于给定的图像f(i,j)中的每个像点(m,n),取其邻域S。设S含有M个像素,取其平均值作为处理后所得图像像点(m,n)处的灰度。用一像素邻域内各像素灰度平均值来代替该像素原来的灰度,即是邻域平均技术。 邻域S的形状和大小根据图像特点确定。一般取的形状是正方形、矩形及十字形等,S的形状和大小可以在全图处理过程中保持不变,也可根据图像的局部统计特性而变化,点(m,n)一般位于S的中心。如S为3×3邻域,点(m,n)位于S中心,则:

图像处理的matlab实现

成绩: 数字图像处理实验报告实验二:图像处理的matlab的实现 学号:0967118225 姓名:洪旭浩 同组人: 电脑编号: 实验时间:2010年6月4日星期一

数字图像处理实验报告 一、实验名称 图像处理的matlab 的实现 二、实验目的 1、了解Matlab 及其工具箱的基本使用方法 2、掌握使用Matlab 打开各种图像文件的方法 3、掌握使用Matlab 进行简单图像处理的方法 三、实验平台 Windows XP,Matlab 7.8.0(R2009a) 四、实验内容 一、直方图均衡化 直方图均衡化处理可将图像的灰度范围拉开,让灰度直方图在较大的动态范围内趋于一致。用图像),(y x f 的直方图代替灰度的分布密度函数)(f p f ,则直方图均衡化后的图像g 为: ?==f f du u p f T g 0)(][对于数字图像,设原图像的像素总数为N,灰度级的个数为L,第k 个灰度级出现的频数为k n 。若原图像),(y x f 在像素点),(y x 处的灰度为k r ,则直方图均衡化后的图像),(y x g 在),(y x 处的灰度k s 为: ∑===k l l k k N n r T s 0][MATLAB 图像处理工具箱提供了用于直方图均衡化的函数histep。histep 函数的语法格式为: J=histep(I,hgram) J=histep(I,n) [J,T]=histep(I,…) newmap=histep(X,map,hgram) newmap=histep(X,map) [newmap,T]=histep(X,…) 其中J=histep(I,hgram)将原始图像I 的直方图变成用户指定的向量hgram,hgram 中的各元素值域为[0,1]。 J=histep(I,n)指定直方图均衡化后的灰度级数n,默认值为64。 [J,T]=histep(I,…)返回能将图像I 的灰度直方图变换成图像J 的直方图的变换T。 newmap=histep(X ,map ,hgram)、newmap=histep(X ,map)和[newmap ,T]=histep(X,…)是针对索引色图像调色板的直方图均衡化。 1、使用以上语句,实现选定图像的直方图均衡化; 2、修改部分参数,观察不同参数下直方图均衡化的变化规律;

数字图像处理 MATLAB代码

MATLAB实用源代码 图像读取及灰度变换 I=imread('cameraman.tif');%读取图像 subplot(1,2,1),imshow(I)%输出图像 title('原始图像')%在原始图像中加标题 subplot(1,2,2),imhist(I)%输出原图直方图 title('原始图像直方图')%在原图直方图上加标题 图像旋转 I=imread('cameraman.tif'); figure,imshow(I); theta=30; K=imrotate(I,theta);%Try varying the angle,theta. figure,imshow(K) 边缘检测 I=imread('cameraman.tif'); J1=edge(I,'sobel'); J2=edge(I,'prewitt'); J3=edge(I,'log'); subplot(1,4,1),imshow(I); subplot(1,4,2),imshow(J1); subplot(1,4,3),imshow(J2); subplot(1,4,4),imshow(J3); 1.图像反转 MATLAB程序实现如下: I=imread('xian.bmp'); J=double(I); J=-J+(256-1);%图像反转线性变换 H=uint8(J); subplot(1,2,1),imshow(I); subplot(1,2,2),imshow(H); 2.灰度线性变换 MATLAB程序实现如下: I=imread('xian.bmp'); subplot(2,2,1),imshow(I); title('原始图像'); axis([50,250,50,200]); axis on;%显示坐标系 I1=rgb2gray(I); subplot(2,2,2),imshow(I1); title('灰度图像'); axis([50,250,50,200]);

图像增强及MATLAB实现

《数字图像处理》课程设计 课设题目:图像增强与MATLAB实现学校学院:华东交通大学理学院 学生班级:13级信息计算(2)班学生:超 学生学号:20130810010216 指导老师:自柱

图像增强与MATLAB实现 摘要 数字图像处理是指将图像信号转换成数字格式并利用计算机对其进行处理的过程。图像增强是数字图像处理的过程中经常采用的一种方法,它对提高图像质量起着重要的作用。本文先对图像增强的原理进行概述,然后对图像增强的方法分类并给出直方图增强、对比度增强、平滑和锐化等几种常用的增强方法的理论基础,通过Matlab实验得出的实际处理效果来对比各种算法的优缺点,讨论不同的增强算法的技术要点,并对其图像增强方法进行性能评价。 关键字:图像;图像增强;算法

目录 一、MATLAB的简介 (1) 1.1MATLAB主要功能 (1) 二、MATLAB的主要功能 (1) 2.1数字增强技术概述 (1) 2.2数字图像的表示 (2)

三、直方图的均衡化 (2) 3.1图像的灰度 (2) 3.2灰度直方图 (2) 3.3直方图均衡化 (3) 四、图像二值化 (5) 4.1图像二值化 (5) 五、对比度增强 (7) 5.1对比度增强 (7) 5.2灰度调整 (8) 5.3对数变换 (9) 六、滤波 (10) 6.1平滑滤波 (10) 6.2线性平滑滤波程序: (11) 6.3非线性滤波 (12) 七、锐化 (18) 八、参考文献 (19) 九、自我评价 (20)

一、Matlab的简介 1.1 MATLAB主要功能 MATLAB是建立在向量、数组和矩阵基础上的一种分析和仿真工具软件包,包含各种能够进行常规运算的“工具箱”,如常用的矩阵代数运算、数组运算、方程求根、优化计算及函数求导积分符号运算等;同时还提供了编程计算的编程特性,通过编程可以解决一些复杂的工程问题;也可绘制二维、三维图形,输出结果可视化。目前,已成为工程领域中较常用的软件工具包之一。 二、MATLAB的主要功能 2.1数字增强技术概述 图像增强是按特定的需要突出一幅图像中的某些信息,同时,消弱或去除某些信息使得图像更加实用。图像增强技术主要包含直方图修改处理、图像平滑处理、图像尖锐化处理等。 图像增强技术主要包括:直方图修改处理,图像平滑处理,图像尖锐化处理,彩色图像处理。从纯技术上讲主要有两类:频域处理法和空域处理法。 频域处理法主要是卷积定理,采用修改图像傅立叶变换的方法实现对图像的增强处理技术;空域处理法:是直接对图像中的像素进行处理,基本上是以灰度映射变换为基础的。

用MATLAB程序进行图像处理

用MATLAB程序进行图像处理 一.计算图像统计参数: 最大值:扫描法:设第一个象素灰度级为最大值,然后与后一个象素灰度级比较,如果后面的大,则把后一象素值赋给最大值,依次逐一比较到图象最后的一个象素,找出最大值。 参考程序: [A,map]=imread('E:\lena.bmp'); %显示原图 imshow(A,map), title('原图'); image=double(A); %求负片 k=image(1,1); for i=1:256, for j=1:256, if kimage(i,j); k=image(i,j);end, end, end, k %显示负片

figure, imshow(rimage,map), title('负片'); 均值:把图中的所有的象素值累加起来再除以图象的象素的个数。 参考程序: [A,map]=imread('E:\lena.bmp'); %显示原图 imshow(A,map), title('原图'); image=double(A); %求负片 k=image(1,1); for i=1:256, for j=1:256, if k>image(i,j); k=image(i,j);end, end, end, k %显示负片 figure, imshow(rimage,map), title('负片'); 直方图:把图中的不同灰度等级的象素分别累加起来,再分别除以图象象素的总数。即:p(sk)=nk/n。可以得到原图的灰度值分布图。 参考程序: [A,map]=imread('e:\lena.bmp'); imshow(A,map), title('原图'); image=double(A); for i=1:256, a(i)=0; end, for i=1:256, for j=1:256, b=image(i,j)+1; a(b)=a(b)+1; end, end, for k=1:256,

基于MATLAB的图像平滑算法实现及应用

目录 1.3 图像噪声 一幅图像在获取和传输等过程中,会受到各种各样噪声的干扰,其主要来源有三:一为在光电、电磁转换过程中引入的人为噪声;二为大气层电(磁)暴、闪电、电压、浪涌等引起的强脉冲性冲激噪声的干扰;三为自然起伏性噪声,由物理量的不连续性或粒子性所引起,这类噪声又可分成热噪声、散粒噪声等。一般在图像处理技术中常见的噪声有:加性噪声、乘性噪声、量化噪声、“盐和胡椒”噪声等。下面介绍两种主要的噪声。 1、高斯噪声 这种噪声主要来源于电子电路噪声和低照明度或高温 带来的传感器噪声,也称为正态噪声,是在实践中经常用到的噪声模型。高斯随机变量z 的概率密度函数(P D F )由下式给出: }2/)(ex p{2/1)(22σμσπ--=z z p 其中, z 表示图像像元的灰度值;μ表示z 的期望;σ表示z 的标准差。 2、椒盐噪声 主要来源于成像过程中的短暂停留和数据传输中产生 的错误。其P D F 为: ?????===其他0)(b z pb a z pa z p 如果b > a , 灰度值b 在图像中显示为一亮点,a 值显

示为一暗点。如果P a和图像均不为零,在图像上的表现类似于随机分布图像上的胡椒和盐粉微粒,因此称为椒盐噪声。当P a为零时,表现为“盐”噪声;当P b为零时,表现为“胡椒”噪声。 图像中的噪声往往是和信号交织在一起的尤其是乘性 噪声,如果平滑不当,就会使图像本身的细节如边缘轮廓‘线条等模糊不清,从而使图像质量降低。

第二章、图像平滑方法 2.1 空域低通滤波 将空间域模板用于图像处理,通常称为空间滤波,而空间域模板称为空间滤波器。空间域滤波按线性和非线性特点有:线性、非线性平滑波器。 线性平滑滤波器包括领域平均法(均值滤波器),非线 性平滑滤波器有中值滤波器。 2.1.1 均值滤波器 对一些图像进行线性滤波可以去除图像中某些类型的噪声,如采用邻域平均法的均值滤波器就非常适用于去除通过扫描得到的图像中的颗粒噪声。邻域平均法是空间域平滑技术。这种方法的基本思想是,在图像空间,假定有一副N ×N 个像素的原始图像f (x ,y ),用领域内几个像素的平均值去代替图像中的每一个像素点值的操作。经过平滑处理后得到一副图像 g (x ,y ), 其表达式如下: ∑∈=s n m n m f M y x g ),(),(/1),( 式中: x ,y =0,1,2,…,N -1;s 为(x ,y )点领域中点的坐标的集合,但不包括(x ,y )点;M 为集合内坐标点的总数。 领域平均法有力地抑制了噪声,但随着领域的增大,图像的模糊程度也愈加严重。为了尽可能地减少模糊失真,也可采用阈值法减少由于领域平均而产生的模糊效应。其公式如下: ?????>-=∑∑∈∈其他),(),(/1),(),(/1),(),(),(y x f T n m f M y x f n m f M y x g s n m s n m 式中:T 为规定的非负阈值。

高斯平滑滤波器(含matlab代码)

Gaussian Smoothing Filter 高斯平滑滤波器 一、图像滤波的基本概念 图像常常被强度随机信号(也称为噪声)所污染.一些常见的噪声有椒盐(Salt & Pepper)噪声、脉冲噪声、高斯噪声等.椒盐噪声含有随机出现的黑白强度值.而脉冲噪声则只含有随机的白强度值(正脉冲噪声)或黑强度值(负脉冲噪声).与前两者不同,高斯噪声含有强度服从高斯或正态分布的噪声.研究滤波就是为了消除噪声干扰。 图像滤波总体上讲包括空域滤波和频域滤波。频率滤波需要先进行傅立叶变换至频域处理然后再反变换回空间域还原图像,空域滤波是直接对图像的数据做空间变换达到滤波的目的。它是一种邻域运算,即输出图像中任何像素的值都是通过采用一定的算法,根据输入图像中对用像素周围一定邻域内像素的值得来的。如果输出像素是输入像素邻域像素的线性组合则称为线性滤波(例如最常见的均值滤波和高斯滤波),否则为非线性滤波(中值滤波、边缘保持滤波等)。 线性平滑滤波器去除高斯噪声的效果很好,且在大多数情况下,对其它类型的噪声也有很好的效果。线性滤波器使用连续窗函数内像素加权和来实现滤波。特别典型的是,同一模式的权重因子可以作用在每一个窗口内,也就意味着线性滤波器是空间不变的,这样就可以使用卷积模板来实现滤波。如果图像的不同部分使用不同的滤波权重因子,且仍然可以用滤波器完成加权运算,那么线性滤波器就是空间可变的。任何不是像素加权运算的滤波器都属于非线性滤波器.非线性滤波器也可以是空间不变的,也就是说,在图像的任何位置上可以进行相同的运算而不考虑图像位置或空间的变化。 二、图像滤波的计算过程分析 滤波通常是用卷积或者相关来描述,而线性滤波一般是通过卷积来描述的。他们非常类似,但是还是会有不同。下面我们来根据相关和卷积计算过程来体会一下他们的具体区别: 卷积的计算步骤: (1)卷积核绕自己的核心元素顺时针旋转180度 (2)移动卷积核的中心元素,使它位于输入图像待处理像素的正上方 (3)在旋转后的卷积核中,将输入图像的像素值作为权重相乘 (4)第三步各结果的和做为该输入像素对应的输出像素 相关的计算步骤: (1)移动相关核的中心元素,使它位于输入图像待处理像素的正上方 (2)将输入图像的像素值作为权重,乘以相关核 (3)将上面各步得到的结果相加做为输出 可以看出他们的主要区别在于计算卷积的时候,卷积核要先做旋转。而计算相关过程中不需要旋转相关核。 例如:magic(3) =[8 1 6;3 5 7;4 9 2],旋转180度后就成了[2 9 4;7 5 3;6 1 8] 三、高斯(核)函数 所谓径向基函数(Radial Basis Function 简称RBF), 就是某种沿径向对称的标量函数。通常定义为空间中任一点x到某一中心xc之间欧氏距离的单调函数, 可记作k(||x-xc||), 其作用往往是局部的, 即当x远离xc时函数取值很小。最常用的径向基函数是高斯核函数,形式为k(||x-xc||)=exp{- ||x-xc||^2/(2*σ)^2) } 其中xc为核函数中心,σ为函数的宽度参数, 控制了函数的径向作用范围。

相关主题
文本预览
相关文档 最新文档