matlab图像去噪程序

合集下载

Matlab中关于图像处理、去噪分析以及有关散点连线画图等程序

Matlab中关于图像处理、去噪分析以及有关散点连线画图等程序

算法程序1.找到图片addpath('C:\Documents and Settings\user\My Documents\My Pictures');imshow('3.jpg')2.将彩色图片处理成灰度图片addpath('C:\Documents and Settings\user\My Documents\My Pictures');A=imread('3.jpg');I=rgb2gray(A);imshow(I)3.改变图片大小右键----编辑----属性-----输入想要的大小4.两张图片相叠加(区分imadd和系数叠加)直接把图像数据矩阵相加,可以设定叠加系数,如(系数可自由设定,按需要)img_tot = img1 * 0.5 + img2 * 0.5; %两个图像大小要一致图像的矩阵我再那里能找到img1 = imread('tupian.bmp');图片相加addpath('C:\Documents and Settings\user\My Documents\My Pictures'); A=imread('2.jpg');imshow(A)>> B=imread('3.jpg');imshow(B)>> C=imadd(A,B);imshow(C)>> D=A*0.5+B*0.5;imshow(D)A图像B图像C图像D图像5.两张图片相减addpath('C:\Documents and Settings\user\My Documents\My Pictures'); A=imread('2.jpg');imshow(A)>> B=imread('3.jpg');imshow(B)K=A-B;imshow(K)各种运算一次可以按照下面的方式用MATLAB呈现6.噪声图像增强直方均衡,平滑,锐化A=imread('18.jpg'); B=rgb2gray(A);figure,subplot(2,2,1),imshow(B);subplot(2,2,2),imhist(B);A1=imadjust(B,[0.2 0.5],[]);subplot(2,2,3),imshow(A1);subplot(2,2,4),imhist(A1);C=imnoise(B,'salt & pepper');h1=[0.1 0.1 0.1;0.1 0.2 0.1;0.1 0.1 0.1]; h2=1/4.*[1 2 1;2 4 2;1 2 1];C1=filter2(h1,C);C2=filter2(h2,C);C3=medfilt2(C);figure,subplot(2,2,1),imshow(C); subplot(2,2,2),imshow(C1,[]);subplot(2,2,3),imshow(C2,[]);subplot(2,2,4),imshow(C3);h=[0 -1 0;-1 4 -1;0 -1 0];D1=imfilter(B,h);d2=fspecial('sobel');D2=imfilter(B,d2);D3=edge(B,'roberts',0.1);figure,subplot(2,2,1),imshow(B); subplot(2,2,2),imshow(D1);subplot(2,2,3),imshow(D2,[]);subplot(2,2,4),imshow(D3);Sas散点图程序:data a;input x y; cards;413 359403 343383.5 351 381 377.5339 376335 383317 362334.5 353.5 333 342282 325247 301219 316225 270280 292290 335337 328415 335432 371418 374444 394251 277234 271225 265212 290227 300256 301250.5 306 243 328246 337314 367315 351326 355327 350328 342.5336 339336 334331 335371 330371 333388.5 330.5419 344411 343394 346342 342342 348325 372315 374342 372345 382 348.5 380.5 351 377348 369370 363371 353354 374363 382.5 357 387351 382369 388335 395381 381391 375392 366395 361398 362401 359405 360410 355408 350415 351418 347422 354 418.5 356 405.5 364.5 405 368409 370417 364420 370424 372438 368 438.5 373 434 376438 385447 392448 381444.5 383441 385440.5 381.5445 380444 360;run;proc gplot data=a;symbol v=star;plot y*x;run;Matlab中画散点图并标号程序:x=[413 403 383.5 381 339 335 317 334.5 333 282 247 219 225 280 290 337 415 432 418 444 251 234 225 212 227 256 250.5 243 246 314 315 326 327 328 336 336 331 371 371 388.5 411 419 411 394 342 342 325 315 342 345 348.5 351 348 370 371 354 363 357 351 369 335 381 391 392 395 398 401 405 410 408 415 418 422 418.5 405.5 405 409 417 420 424 438 438.5 434 438 440 447 448 444.5 441 440.5 445 444];y=[359 343 351 377.5 376 383 362 353.5 342 325 301 316 270 292 335 328 335 371 374 394 277 271 265 290 300 301 306 328 337 367 351 355 350 342.5 339 334 335 330 333 330.5 327.5 344 343 346 342 348 372 374 372 382 380.5 377 369 363 353 374 382.5 387 382 388 395 381 375 366 361 362 359 360 355 350 351 347 354 356 364.5 368 370 364 370 372 368 373 376 385 392 392 381 383 385 381.5 380 360];plot(x,y,'.')hold onfor i=1:92c=num2str(i);text(x(i),y(i),c)end散点图标号并连接相应直线段x=[413 403 383.5 381 339 335 317 334.5 333 282 247 219 225 280 290 337 415 432 418 444 251 234 225 212 227 256 250.5 243 246 314 315 326 327 328 336 336 331 371 371 388.5 411 419 411 394 342 342 325 315 342 345 348.5 351 348 370 371 354 363 357 351 369 335 381 391 392 395 398 401 405 410 408 415 418 422 418.5 405.5 405 409 417 420 424 438 438.5 434 438 440 447 448 444.5 441 440.5 445 444];y=[359 343 351 377.5 376 383 362 353.5 342 325 301 316 270 292 335 328 335 371 374 394 277 271 265 290 300 301 306 328 337 367 351 355 350 342.5 339 334 335 330 333 330.5 327.5 344 343 346 342 348 372 374 372 382 380.5377 369 363 353 374 382.5 387 382 388 395 381 375 366 361 362 359 360 355 350 351 347 354 356 364.5 368 370 364 370 372 368 373 376 385 392 392 381 383 385 381.5 380 360];plot(x,y,'.')hold onfor i=1:92c=num2str(i);text(x(i),y(i),c)end>> j=[1 1 2 3 3 4 4 5 5 6 7 7 8 8 9 10 11 11 1214 15 15 16 16 17 17 17 18 18 19 20 21 22 23 24 24 25 2626 27 28 28 29 30 30 31 31 32 33 33 34 35 36 36 36 36 3738 38 39 40 41 41 42 43 43 44 45 46 46 47 47 47 48 49 4950 51 51 52 53 53 54 54 55 56 57 57 57 58 60 61 62 62 6364 64 65 66 66 67 67 68 68 69 69 69 70 70 71 71 72 73 7374 74 75 76 77 77 78 79 80 81 82 82 83 84 85 86 86 87 8788 88 89 89 89 90 91];k=[75 78 44 45 65 39 63 49 50 59 32 47 9 47 35 34 22 26 2521 7 31 14 38 40 42 81 81 83 79 86 22 13 13 13 25 11 2710 12 29 15 30 7 48 32 34 33 34 8 9 45 35 37 16 39 739 41 40 2 17 92 43 2 72 3 46 8 55 48 6 5 61 50 5351 52 59 56 52 54 55 63 3 57 58 60 4 59 62 60 4 85 6465 76 66 67 76 44 68 69 75 70 71 1 2 43 72 74 73 74 181 80 76 77 78 19 79 80 18 82 83 90 84 85 20 87 88 88 9289 91 20 84 90 91 92];J=x(j);K=x(k);Q=y(j);W=y(k);n=length(J);for l=1:nline([J(l),K(l)],[Q(l),W(l)])endx=[413 403 383.5 381 339 335 317 334.5 333 282 247 219 225 280 290 337 415 432 418 444 251 234 225 212 227 256 250.5 243 246 314 315 326 327 328 336 336 331 371 371 388.5 411 419 411 394 342 342 325 315 342 345 348.5 351 348 370 371 354 363 357 351 369 335 381 391 392 395 398 401 405 410 408 415 418 422 418.5 405.5 405 409 417 420 424 438 438.5 434 438 440 447 448 444.5 441 440.5 445 444];y=[359 343 351 377.5 376 383 362 353.5 342 325 301 316 270 292 335 328 335 371 374 394 277 271 265 290 300 301 306 328 337 367 351 355 350 342.5 339 334 335 330 333 330.5 327.5 344 343 346 342 348 372 374 372 382 380.5 377 369 363 353 374 382.5 387 382 388 395 381 375 366 361 362 359 360 355 350 351 347 354 356 364.5 368 370 364 370 372 368 373 376 385 392 392 381 383 385 381.5 380 360];plot(x,y,'.')hold onfor i=1:92c=num2str(i);text(x(i),y(i),c)end>> j=[1 1 2 3 3 4 4 5 5 6 7 7 8 8 9 10 11 11 1214 15 15 16 16 17 17 17 18 18 19 20 21 22 23 24 24 25 2626 27 28 28 29 30 30 31 31 32 33 33 34 35 36 36 36 36 3738 38 39 40 41 41 42 43 43 44 45 46 46 47 47 47 48 49 4950 51 51 52 53 53 54 54 55 56 57 57 57 58 60 61 62 62 6364 64 65 66 66 67 67 68 68 69 69 69 70 70 71 71 72 73 7374 74 75 76 77 77 78 79 80 81 82 82 83 84 85 86 86 87 8788 88 89 89 89 90 91];k=[75 78 44 45 65 39 63 49 50 59 32 47 9 47 35 34 22 26 2521 7 31 14 38 40 42 81 81 83 79 86 22 13 13 13 25 11 2710 12 29 15 30 7 48 32 34 33 34 8 9 45 35 37 16 39 739 41 40 2 17 92 43 2 72 3 46 8 55 48 6 5 61 50 5351 52 59 56 52 54 55 63 3 57 58 60 4 59 62 60 4 85 6465 76 66 67 76 44 68 69 75 70 71 1 2 43 72 74 73 74 181 80 76 77 78 19 79 80 18 82 83 90 84 85 20 87 88 88 9289 91 20 84 90 91 92];J=x(j);K=x(k);Q=y(j);W=y(k);n=length(J);for l=1:nline([J(l),K(l)],[Q(l),W(l)])N(l)=sqrt((K(l)-J(l))^2+(W(l)-Q(l))^2);X(l)=0.5*(J(l)+K(l));Y(l)=0.5*(Q(l)+W(l));p=num2str(N(l));text(X(l),Y(l),p)endx=[413 403 383.5 381 339 335 317 334.5 333 282 247 219 225 280 290 337 415 432 418 444 251 234 225 212 227 256 250.5 243 246 314 315 326 327 328 336 336 331 371 371 388.5 411 419 411 394 342 342 325 315 342 345 348.5 351 348 370 371 354 363 357 351 369 335 381 391 392 395 398 401 405 410 408 415 418 422 418.5 405.5 405 409 417 420 424 438 438.5 434 438 440 447 448 444.5 441 440.5 445 444];y=[359 343 351 377.5 376 383 362 353.5 342 325 301 316 270 292 335 328 335 371 374 394 277 271 265 290 300 301 306 328 337 367 351 355 350 342.5 339 334 335 330 333 330.5 327.5 344 343 346 342 348 372 374 372 382 380.5 377 369 363 353 374 382.5 387 382 388 395 381 375 366 361 362 359 360 355 350 351 347 354 356 364.5 368 370 364 370 372 368 373 376 385 392 392 381 383 385 381.5 380 360];plot(x,y,'.')hold onfor i=1:92c=num2str(i);text(x(i),y(i),c)endj=[1 1 2 3 3 4 4 5 5 6 7 7 8 8 9 10 11 11 12 1415 15 16 16 17 17 17 18 18 19 20 21 22 23 24 24 25 26 2627 28 28 29 30 30 31 31 32 33 33 34 35 36 36 36 36 37 3838 39 40 41 41 42 43 43 44 45 46 46 47 47 47 48 49 49 5051 51 52 53 53 54 54 55 56 57 57 57 58 60 61 62 62 63 6464 65 66 66 67 67 68 68 69 69 69 70 70 71 71 72 73 73 7474 75 76 77 77 78 79 80 81 82 82 83 84 85 86 86 87 87 8888 89 89 89 90 91];k=[75 78 44 45 65 39 63 49 50 59 32 47 9 47 35 34 22 26 2521 7 31 14 38 40 42 81 81 83 79 86 22 13 13 13 25 11 2710 12 29 15 30 7 48 32 34 33 34 8 9 45 35 37 16 39 739 41 40 2 17 92 43 2 72 3 46 8 55 48 6 5 61 50 5351 52 59 56 52 54 55 63 3 57 58 60 4 59 62 60 4 85 6465 76 66 67 76 44 68 69 75 70 71 1 2 43 72 74 73 74 181 80 76 77 78 19 79 80 18 82 83 90 84 85 20 87 88 88 9289 91 20 84 90 91 92];J=x(j);K=x(k);Q=y(j);W=y(k);n=length(J);for l=1:nline([J(l),K(l)],[Q(l),W(l)])N(l)=sqrt((K(l)-J(l))^2+(W(l)-Q(l))^2);endNN =Columns 1 through 89.3005 6.4031 9.4868 42.4647 15.2398 45.6098 10.3078 5.0000 Columns 9 through 168.4853 16.0312 11.4018 12.8062 11.5974 20.7966 4.2426 49.2164 Columns 17 through 2432.6956 9.0000 17.8885 32.6497 38.1838 29.6816 67.4166 34.0588 Columns 25 through 3226.8794 9.8489 40.2244 6.7082 5.3852 4.4721 3.6056 18.0278 Columns 33 through 409.0554 5.0000 23.8537 18.0278 20.0250 7.4330 35.3836 33.0492 Columns 41 through 489.4868 47.5184 74.3236 5.8310 7.0711 11.7047 15.5322 5.0990 Columns 49 through 567.5664 8.2765 5.0249 6.7082 5.0000 5.0990 6.0828 35.0143 Columns 57 through 6430.4138 3.0000 40.0780 17.6777 19.1442 8.5000 46.3168 8.0623 Columns 65 through 728.0000 8.0623 11.6297 6.0000 9.3005 29.4279 10.1980 14.8661 Columns 73 through 8014.5602 29.0000 10.4403 6.7082 3.8079 4.3012 2.9155 4.2426 Columns 81 through 888.5440 22.8035 10.0499 24.1868 12.6590 12.3794 7.5000 8.1394 Columns 89 through 9618.6815 7.8102 13.8924 34.7131 3.5000 60.0167 9.0554 5.8310 Columns 97 through 10413.1529 3.1623 4.2426 9.2195 14.7648 4.1231 7.0711 4.5277 Columns 105 through 1125.38526.4031 5.0000 8.60237.6158 5.0000 6.10338.0623 Columns 113 through 1204.0311 19.7231 6.2650 16.9189 3.5355 4.4721 10.0000 9.8489 Columns 121 through 1286.7082 4.4721 8.0623 5.0249 5.4083 8.7321 9.84897.2801 Columns 129 through 1364.4721 11.0454 9.3408 4.0311 21.3776 4.0311 3.0414 9.4868 Columns 137 through 1403.0000 3.53554.7434 20.0250。

如何在Matlab中进行图像去噪与复原

如何在Matlab中进行图像去噪与复原

如何在Matlab中进行图像去噪与复原图像去噪与复原在计算机视觉和图像处理领域有着重要的应用价值。

当图像受到噪声污染或损坏时,我们需要采取适当的方法来还原图像的清晰度和准确性。

在这方面,Matlab作为一种强大的数值计算软件,提供了丰富的图像处理工具和函数,能够帮助我们有效地进行图像去噪和复原。

一、图像去噪方法介绍在进行图像去噪之前,我们需要了解一些常见的图像噪声类型和去噪方法。

常见的图像噪声类型包括高斯噪声、椒盐噪声和泊松噪声等。

对于这些噪声,我们可以采用滤波方法进行去噪处理。

Matlab提供了多种滤波函数,包括均值滤波、中值滤波、高斯滤波等。

这些函数能够基于不同的滤波算法,去除图像中的噪声,提高图像质量。

1.1 均值滤波均值滤波是一种简单的滤波方法,通过计算像素周围邻域的平均灰度值来减小噪声的影响。

在Matlab中,可以使用imfilter函数实现均值滤波。

该函数可以指定滤波器的大小和形状,对图像进行滤波处理。

均值滤波适用于高斯噪声的去除,但对于椒盐噪声等其他类型的噪声效果不佳。

1.2 中值滤波中值滤波是一种非线性滤波方法,通过在像素周围邻域中选择中间灰度值来减小噪声的影响。

在Matlab中,可以使用medfilt2函数实现中值滤波。

该函数可以指定滤波器的大小和形状,对图像进行滤波处理。

中值滤波适用于椒盐噪声的去除,对于高斯噪声等其他类型的噪声有效果不佳。

1.3 高斯滤波高斯滤波是一种线性滤波方法,通过根据像素周围邻域的权重来减小噪声的影响。

在Matlab中,可以使用imgaussfilt函数实现高斯滤波。

该函数可以指定滤波器的大小和标准差,对图像进行滤波处理。

高斯滤波适用于高斯噪声的去除,对于椒盐噪声等其他类型的噪声效果较好。

二、图像复原方法介绍除了去噪,图像复原也是图像处理中常见的任务之一。

图像复原主要是指恢复图像中的缺失或破损的信息,使得图像在视觉上更加清晰和准确。

在Matlab中,可以使用多种方法进行图像复原,包括图像插值、图像修复和图像增强等。

matlab图像去噪算法设计(精)(word文档良心出品)

matlab图像去噪算法设计(精)(word文档良心出品)

数字图像去噪典型算法及matlab实现希望得到大家的指点和帮助图像去噪是数字图像处理中的重要环节和步骤。

去噪效果的好坏直接影响到后续的图像处理工作如图像分割、边缘检测等。

图像信号在产生、传输过程中都可能会受到噪声的污染,一般数字图像系统中的常见噪声主要有:高斯噪声(主要由阻性元器件内部产生)、椒盐噪声(主要是图像切割引起的黑图像上的白点噪声或光电转换过程中产生的泊松噪声)等;目前比较经典的图像去噪算法主要有以下三种:均值滤波算法:也称线性滤波,主要思想为邻域平均法,即用几个像素灰度的平均值来代替每个像素的灰度。

有效抑制加性噪声,但容易引起图像模糊,可以对其进行改进,主要避开对景物边缘的平滑处理。

中值滤波:基于排序统计理论的一种能有效抑制噪声的非线性平滑滤波信号处理技术。

中值滤波的特点即是首先确定一个以某个像素为中心点的邻域,一般为方形邻域,也可以为圆形、十字形等等,然后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值,这里领域被称为窗口,当窗口移动时,利用中值滤波可以对图像进行平滑处理。

其算法简单,时间复杂度低,但其对点、线和尖顶多的图像不宜采用中值滤波。

很容易自适应化。

Wiener维纳滤波:使原始图像和其恢复图像之间的均方误差最小的复原方法,是一种自适应滤波器,根据局部方差来调整滤波器效果。

对于去除高斯噪声效果明显。

实验一:均值滤波对高斯噪声的效果I=imread('C:\Documents and Settings\Administrator\桌面\1.gif');%读取图像J=imnoise(I,'gaussian',0,0.005);%加入均值为0,方差为0.005的高斯噪声subplot(2,3,1);imshow(I);title('原始图像');subplot(2,3,2); imshow(J);title('加入高斯噪声之后的图像');%采用MATLAB中的函数filter2对受噪声干扰的图像进行均值滤波K1=filter2(fspecial('average',3),J)/255; %模板尺寸为3K2=filter2(fspecial('average',5),J)/255;% 模板尺寸为5K3=filter2(fspecial('average',7),J)/255; %模板尺寸为7K4= filter2(fspecial('average',9),J)/255; %模板尺寸为9subplot(2,3,3);imshow(K1);title('改进后的图像1');subplot(2,3,4); imshow(K2);title('改进后的图像2');subplot(2,3,5);imshow(K3);title('改进后的图像3');subplot(2,3,6);imshow(K4);title('改进后的图像4');PS:filter2用法fspecial函数用于创建预定义的滤波算子,其语法格式为:h = fspecial(type)h = fspecial(type,parameters)参数type制定算子类型,parameters指定相应的参数,具体格式为:type='average',为均值滤波,参数为n,代表模版尺寸,用向量表示,默认值为[3,3]。

利用Matlab进行图像去噪和图像增强

利用Matlab进行图像去噪和图像增强

利用Matlab进行图像去噪和图像增强随着数字图像处理技术的不断发展和成熟,图像去噪和图像增强在各个领域都有广泛的应用。

而在数字图像处理的工具中,Matlab凭借其强大的功能和易于使用的特点,成为了许多研究者和工程师首选的软件之一。

本文将介绍如何利用Matlab进行图像去噪和图像增强的方法和技巧。

一、图像去噪图像去噪是指通过一系列算法和技术,将图像中的噪声信号去除或减弱,提高图像的质量和清晰度。

Matlab提供了多种去噪方法,其中最常用的方法之一是利用小波变换进行去噪。

1. 小波变换去噪小波变换是一种多尺度分析方法,能够对信号进行时频分析,通过将信号分解到不同的尺度上,实现对图像的去噪。

在Matlab中,可以使用"dwt"函数进行小波变换,将图像分解为低频和高频子带,然后通过对高频子带进行阈值处理,将噪声信号滤除。

最后通过逆小波变换将去噪后的图像重构出来。

这种方法能够有效抑制高频噪声,保留图像的细节信息。

2. 均值滤波去噪均值滤波是一种基于平均值的线性滤波方法,通过计算像素周围邻域内像素的平均值,替代原始像素的值来去除噪声。

在Matlab中,可以使用"imfilter"函数进行均值滤波,通过设置适当的滤波模板大小和滤波器系数,实现对图像的去噪。

二、图像增强图像增强是指通过一系列算法和技术,改善图像的质量、增强图像的细节和对比度,使图像更容易被观察和理解。

Matlab提供了多种图像增强方法,以下将介绍其中的两种常用方法。

1. 直方图均衡化直方图均衡化是一种通过对图像像素值的分布进行调整,增强图像对比度的方法。

在Matlab中,可以使用"histeq"函数进行直方图均衡化处理。

该函数能够将图像的像素值分布拉伸到整个灰度级范围内,提高图像的动态范围和对比度。

2. 锐化增强锐化增强是一种通过增强图像边缘和细节来改善图像质量的方法。

在Matlab中,可以使用"imsharpen"函数进行图像的锐化增强处理。

matlab图像去噪程序

matlab图像去噪程序

matlab图像去噪程序function varargout = jiemian(varargin) %返回从函数jiemian.m中得到的参数中变量的数目;传递一个参数中变量的数目给函数jiemian.m。

% JIEMIAN Application M-file for jiemian.fig% FIG = JIEMIAN launch jiemian GUI.% JIEMIAN('callback_name', ...) invoke the named callback.% Last Modified by shijiawei v2.5 24-May-2014 02:45:18if nargin == 0 % LAUNCH GUI %nargin 显示输入变量fig = openfig(mfilename,'reuse'); %打开包含在FIG文件filename.fig中的图形,确保它是可见的并且完全定位在屏幕上。

% Generate a structure of handles to pass to callbacks, and store it.handles = guihandles(fig); %返回一个结构,它包含图像中对象的句柄guidata(fig, handles); %将变量handles存储到fig文件中if nargout > 0 %如果输出变量大于0varargout{1} = fig; %返回figendelseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK %如果varargin{1}是一个字符数组则返回逻辑真(1),否则返回逻辑假(0)。

tryif (nargout) %显示用户提供的输出变量的个数[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard%varargout传递参数中的变量数目elsefeval(varargin{:}); % FEVAL switchyard %**feval函数的求值endcatch %如果出错开始执行catch块disp(lasterr); %%%% lasterr函数查询出错原因。

完整版)小波变换图像去噪MATLAB实现

完整版)小波变换图像去噪MATLAB实现

完整版)小波变换图像去噪MATLAB实现本论文旨在研究数字图像的滤波去噪问题,以提高图像质量。

数字图像处理(Digital Image Processing。

DIP)是指用计算机辅助技术对图像信号进行处理的过程。

DIP技术在医疗、艺术、军事、航天等图像处理领域都有着十分广泛的应用。

然而,图像的采集、获取、编码和传输的过程中,都存在不同程度被各种噪声所“污染”的现象。

如果图像被污染得比较严重,噪声会变成可见的颗粒形状,导致图像质量的严重下降。

因此,通过一些卓有成效的噪声处理技术后,尽可能地去除图像噪声,有利于进一步的对图像进行如特征提取、信号检测和图像压缩等处理。

小波变换处理应用于图像去噪外,在其他图像处理领域都有着十分广泛的应用。

小波定义为对给定函数局部化的新领域,小波可由一个定义在有限区域的函数Ψ(x)来构造,Ψ(x)称为母小波,或者叫做基本小波。

一组小波基函数,{Ψa,b(x)},可以通过缩放和平移基本小波来生成。

当a=2j和b=ia的情况下,一维小波基函数序列定义为Ψi,j(x)=2-j2Ψ2-jx-1.函数f(x)以小波Ψ(x)为基的连续小波变换定义为函数f(x)和Ψa,b(x)的内积。

在频域上有Ψa,b(x)=ae-jωΨ(aω)。

因此,本论文以小波变换作为分析工具处理图像噪声,研究数字图像的滤波去噪问题,以提高图像质量。

当绝对值|a|减小时,小波函数在时域的宽度会减小,但在频域的宽度会增大,同时窗口中心会向|ω|增大的方向移动。

这说明连续小波的局部变化是不同的,高频时分辨率高,低频时分辨率低,这是小波变换相对于___变换的优势之一。

总的来说,小波变换具有更好的时频窗口特性。

噪声是指妨碍人或相关传感器理解或分析图像信息的各种因素。

噪声通常是不可预测的随机信号。

由于噪声在图像输入、采集、处理和输出的各个环节中都会影响,特别是在输入和采集中,噪声会影响整个图像处理过程,因此抑制噪声已成为图像处理中非常重要的一步。

matlab去噪程序

matlab去噪程序

matlab去噪程序
clear all
clc
ECG=load('ECG.txt');
t=ECG(:,1);
y=ECG(:,2);
plot(t,y);
title('含噪心电信号');
axis([0 240 7 11 ]);
xlabel('t');
ylabel('y');
%自适应滤波器
% 50Hz工频干扰陷波器
%50Hz陷波器:由一个低通滤波器加上一个高通滤波器组成 %而高通滤波器由一个全通滤波器减去一个低通滤波器构成 M=800; %滤波器阶数
L=800; %窗口长度
beta=8; %衰减系数
Fs=400;
wc1=51/(Fs/2)*pi; %wc1为高通滤波器截止频率,对应51Hz
wc2=49/(Fs/2)*pi ;%wc2为低通滤波器截止频率,对应49Hz h=ideal_lp(pi,M)-ideal_lp(wc1,M)+ideal_lp(wc2,M); %h为陷波器冲击响应
w=kaiser(L,beta);
b=h.*rot90(w); %b为50Hz陷波器冲击响应序列
x=filter(b,1,y); %滤除50Hz工频干扰的心电信号 %其中,具有线性相位的FIR低通滤波器由如下函数实现: %理想低通滤波器
%截止角频率wc,阶数M
function hd=ideal_lp(wc,M)
alpha=(M-1)/2;
n=0:M-1;
m=n-alpha+eps; %eps为很小的数,避免被0除 hd=sin(wc*m)./(pi*m); %用Sinc函数产生冲击响应。

matlab中的去噪函数

matlab中的去噪函数

matlab中的去噪函数
MATLAB中有多种用于去噪的函数和工具,其中一些常用的包括:
1. `medfilt1`,这个函数用于对一维信号进行中值滤波,可以
有效地去除椒盐噪声和其他类型的噪声。

2. `medfilt2`,类似于`medfilt1`,这个函数用于对二维图像
进行中值滤波,对于去除图像中的斑点噪声和其他类型的噪声效果
很好。

3. `wiener2`,这个函数实现了维纳滤波器,可以用于图像的
去噪。

维纳滤波器是一种自适应滤波器,可以根据图像的局部特性
进行滤波,适用于各种类型的噪声。

4. `imfilter`,这个函数可以实现各种类型的滤波操作,包括
高斯滤波、均值滤波等,可以根据具体的需求选择合适的滤波器进
行去噪处理。

5. `denoiseWavelet`,MATLAB中还提供了基于小波变换的去
噪函数,可以通过小波阈值处理来去除信号中的噪声成分。

除了以上提到的函数,MATLAB还提供了一些图像处理工具箱,
其中包含了更多高级的去噪算法和工具,比如基于深度学习的去噪
方法、非局部均值去噪(NL-means denoising)等。

这些工具可以
根据具体的应用场景和需求选择合适的去噪方法进行处理。

总的来说,MATLAB提供了丰富的去噪函数和工具,可以根据具
体的信号或图像特性选择合适的方法进行去噪处理。

在实际应用中,需要根据噪声类型、信噪比以及对信号质量的要求来选择合适的去
噪方法。

【谷速软件】matlab源码-图像去噪算法

【谷速软件】matlab源码-图像去噪算法

1、对于Circuit.jpg图像,这里采用中值滤波算法对其进行去噪。

中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。

中值滤波器可以做到既去除噪声又能保护图像的边缘,从而获得较满意的复原效果,而且,在实际运算过程中不需要图象的统计特性,这也带来不少方便,但对一些细节多,特别是点、线、尖顶细节较多的图象不宜采用中值滤波的方法。

实现方法:1:通过从图像中的某个采样窗口取出奇数个数据进行排序2:用排序后的中值取代要处理的数据即可函数B=medfilt2(A,[M,N])实现对二维矩阵A的中值滤波,每一个输出像素包含输入图像中相应像素周围的M*N个相邻像素点的平均值,medfilt2 将图像的边缘用值为0的像素填补,同时用到了ordfilt2函数,该函数可进行二维统计顺序过滤。

当模板值为3时,虽然图像非常清楚,但明显有几个特别亮的点存在,若加大模板值,亮点的亮度减弱,图像的清晰度减弱,当中值滤波的模板选为7x7的时候椒盐噪声的处理效果最好,但是同时它也模糊了边缘的清晰度,因此使用了自适应中值滤波器,目的是为了区分椒盐噪声和边缘颜色的突变。

程序源代码:clearI=imread('E:\新建文件夹 \图像处理作业\Circuit.jpg');subplot(2,3,1),title('原图像'),xlabel('a'),imshow(I)subplot(2,3,1),imshow(I);title('原图像'),xlabel('a')J=medfilt2(I,'symmetric');subplot(2,3,2),imshow(J);title('3X3 中值滤波'),xlabel('b')K=medfilt2(I,[5,5],'symmetric');subplot(2,3,3),imshow(K);title('重复使用中值滤波'),xlabel('c')O=medfilt2(J,[5,5],'symmetric');subplot(2,3,4),imshow(O);title('5X5 中值滤波'),xlabel('d')O=medfilt2(J,[7,7],'symmetric');subplot(2,3,5),imshow(O);title('7X7 中值滤波'),xlabel('e')其处理后的图像为:2、对于图像boy_noisy.gif,这里采用巴特沃斯低通滤波器算法去噪即可得到很好的效果。

matlab课程设计--利用MATLAB仿真软件实现图像的去噪处理

matlab课程设计--利用MATLAB仿真软件实现图像的去噪处理

课程设计任务书学生姓名:专业班级:指导教师:刘新华工作单位:信息工程学院题目:利用MATLAB仿真软件实现图像的去噪处理要求完成的主要任务:1. 读取图像并分别加入高斯噪声、椒盐噪声、乘性噪声。

2. 采取合适的滤波器进行去噪处理,能显示原始图像、加噪后图像和去噪后图像。

课程设计的目的:1.理论目的课程设计的目的之一是为了提高自学能力,并能用所学理论知识正确分析图像噪声。

2.实践目的课程设计的目的之二是通过编写图像加噪去噪程序掌握图像噪声处理的方法和步骤。

时间安排:指导教师签名:年月日系主任(或责任教师)签字:年月日目录摘要 (I)Abstract (II)1 引言 (1)1.1MATLAB介绍 (1)1. 2MATLAB图像处理工具箱函数介绍 (2)2 图像的采集 (3)3 图像的加噪 (4)3.1加入乘性噪声 (4)3.1.1噪声分析与函数使用 (4)3.1.2代码及其注释 (4)3.1.3图像仿真 (5)3.2加入椒盐噪声 (5)3.2.1噪声分析与函数使用 (5)3.2.2代码及其注释 (5)3.2.3图像仿真 (6)3.3加入高斯噪声 (6)3.3.1噪声分析与函数使用 (6)3.3.2代码及其注释 (7)3.3.3图像仿真 (7)4 图像的去噪 (7)4.1滤波器的介绍 (7)4.1.1均值滤波 (8)4.1.2中值滤波 (8)4.1.3维纳滤波 (9)4.2去除乘性噪声 (9)4.2.1代码及其注释 (9)4.2.2图像仿真 (10)4.2.3效果分析 (11)4.3去除椒盐噪声 (11)4.3.1代码及其注释 (11)4.3.2图像仿真 (12)4.3.3效果分析 (12)4.4去除高斯噪声 (12)4.4.1代码及其注释 (12)4.4.2图像仿真 (13)4.4.3效果分析 (13)5 心得体会 (14)参考文献 (15)附件:MATLAB程序 (16)摘要本次课程设计报告在简要介绍MATLAB 软件的基础上, 结合其图象处理工具, 重点分析了MATLAB 在图象处理中的应用。

基于MATLAB的图像去噪实验报告

基于MATLAB的图像去噪实验报告

实验二图像去噪一、实验目的1. 熟悉图像高斯噪声和椒盐噪声的特点;2. 掌握利用均值滤波和中值滤波去除图像噪声的方法。

二、实验内容1. 打开Matlab 编程环境。

2. 读入图像,在图像上分别添加高斯噪声和椒盐噪声。

3. 显示原图像和噪声图像。

4. 对噪声图像进行均值滤波和中值滤波处理。

5. 显示处理效果图。

三、实验程序及结果1、实验程序m=imread('pout.tif');x=imnoise(m,'salt & pepper',0.02);y=imnoise(m,'gaussian',0,0.01);figure(1)subplot(311)imshow(m);subplot(312)imshow(x)subplot(313)imshow(y);q=filter2(fspecial('average',3),x);w=filter2(fspecial('average',3),y);n=medfilt2(m);figure(2)subplot(311)imshow(uint8(q));subplot(312)imshow(uint8(w));subplot(313)imshow(n);2、实验结果四、实验思考:1. 比较均值滤波和中值滤波的对高斯噪声和椒盐噪声图像的处理效果,分析原理?答:中值滤波对于椒盐噪声效果好,因为椒盐噪声是幅值近似相等但随机分布在不同的位置上,图像中有干净点也有污染点。

中值滤波是选择适当的点来代替污染的点所以处理效果会更好。

由于噪声的均值不为零,所以均值滤波不能很好的去除噪声点。

均值滤波对于高斯噪声效果好,因为高斯噪声的幅值近似于正态分布但是却分布在每个点像素上。

图像中的每个点都是污染点,所以如果采用中值滤波会找不到合适的干净点,由于正态分布的均值为零,所以均值滤波可以削弱噪声。

利用Matlab进行图像去噪与复原的方法与技巧

利用Matlab进行图像去噪与复原的方法与技巧

利用Matlab进行图像去噪与复原的方法与技巧引言随着科技的不断发展和图像的广泛应用,图像的质量要求也越来越高。

然而,在实际应用中,由于环境的干扰等因素,图像往往会受到噪声的污染,导致图像质量下降。

因此,图像去噪与复原成为了图像处理领域的关键问题之一。

本文将介绍如何使用Matlab进行图像去噪与复原,并探讨其中的方法与技巧。

一、图像去噪的基本概念图像去噪是指通过各种方法将图像中的噪声信号剔除或减弱,以提高图像质量的过程。

常见的图像噪声有高斯噪声、椒盐噪声等。

在Matlab中,我们可以利用一些函数实现图像去噪的操作。

其中,最常用的就是使用均值滤波器和中值滤波器。

1.1 均值滤波器均值滤波器是一种简单的图像平滑技术,通过计算像素周围的邻域像素的平均值来进行滤波。

在Matlab中,我们可以使用"imfilter"函数来实现均值滤波器。

具体步骤如下:(1)读取图像,将其转化为灰度图像;(2)使用"imfilter"函数,定义一个滤波器模板,例如3*3的矩阵;(3)调用"imfilter"函数,将原始图像和滤波器模板作为输入,得到滤波后的图像。

1.2 中值滤波器中值滤波器是一种非线性滤波技术,它将像素周围邻域像素的中值作为滤波后的像素值。

相比于均值滤波器,中值滤波器对于椒盐噪声等异常值有较好的抑制作用。

在Matlab中,我们可以使用"medfilt2"函数来实现中值滤波器。

具体步骤如下:(1)读取图像,将其转化为灰度图像;(2)调用"medfilt2"函数,设置滤波器的大小,例如3*3的矩阵;(3)将原始图像作为输入,得到滤波后的图像。

二、图像复原的基本概念图像复原是指通过各种方法将受损的图像恢复到原始的清晰状态的过程。

图像的损伤可以是由于传感器噪声、图像压缩等原因导致的。

在Matlab中,我们可以利用一些函数实现图像复原。

Matlab中的图像去噪与恢复方法

Matlab中的图像去噪与恢复方法

Matlab中的图像去噪与恢复方法图像去噪与恢复是数字图像处理中一个非常重要的任务,旨在提升图像的质量并减少由噪声引起的干扰。

Matlab作为一种功能强大且广泛使用的数学软件,提供了多种图像去噪与恢复的方法,本文将对其中一些常用的方法进行介绍。

一、均值滤波均值滤波是一种简单且常用的图像去噪方法。

它通过选取图像中每个像素周围邻域的像素值的平均值来替代该像素的值。

这样可以平滑图像并减少噪声的影响。

在Matlab中,可以使用函数imfilter来实现均值滤波。

二、中值滤波中值滤波是一种非线性滤波方法,它通过选取图像中每个像素周围邻域的像素值的中值来替代该像素的值。

与均值滤波相比,中值滤波能够更好地保留图像的边缘信息。

在Matlab中,可以使用函数medfilt2来实现中值滤波。

三、小波去噪小波去噪是一种基于小波变换的图像去噪方法。

它通过将图像从时域转换到小波域,并利用小波系数的特征进行噪声的分析和消除。

在Matlab中,可以使用函数wdenoise来实现小波去噪。

四、自适应滤波自适应滤波是一种根据图像的局部特征来调整滤波参数的图像去噪方法。

它能够根据图像中不同区域的噪声特点来自动调整滤波参数,从而提高去噪效果。

在Matlab中,可以使用函数adpmedian来实现自适应中值滤波。

五、图像恢复除了去噪外,图像恢复也是数字图像处理中一个重要的任务。

它旨在通过使用图像处理技术来还原受损图像的质量和信息。

在Matlab中,可以使用各种图像恢复算法来实现不同的任务,如图像修复、图像重建等。

六、总结本文对Matlab中的图像去噪与恢复方法进行了简要介绍。

均值滤波和中值滤波是两种常用的图像去噪方法,可以简单快速地实现去噪效果。

小波去噪和自适应滤波则更加复杂,但能够在一定程度上提高去噪效果。

此外,Matlab还提供了各种图像恢复算法,可以根据实际需求选择合适的算法来进行图像的修复和重建。

总之,Matlab作为一种强大的数学软件,在图像去噪与恢复方面提供了多种方法和工具。

去除高斯噪声的matlab代码

去除高斯噪声的matlab代码

去除高斯噪声的matlab代码高斯噪声是一种常见的图像噪声,它会导致图像变得模糊和不清晰。

在数字图像处理中,我们经常需要去除这种噪声,以提高图像的质量和清晰度。

本文将介绍如何使用MATLAB编写代码来去除高斯噪声。

首先,我们需要导入图像并显示它。

假设我们的图像文件名为"image.jpg",我们可以使用以下代码来导入和显示图像:```matlabimage = imread('image.jpg');imshow(image);```接下来,我们需要将图像转换为灰度图像。

这是因为高斯噪声通常会影响图像的亮度,而不是颜色。

我们可以使用以下代码将图像转换为灰度图像:```matlabgray_image = rgb2gray(image);imshow(gray_image);```然后,我们可以使用MATLAB的内置函数"imnoise"来添加高斯噪声到图像中。

该函数需要指定噪声类型和噪声强度。

对于高斯噪声,我们可以使用"gaussian"作为噪声类型,并指定噪声强度为0.02。

以下是添加高斯噪声的代码:```matlabnoisy_image = imnoise(gray_image, 'gaussian', 0, 0.02);imshow(noisy_image);```现在,我们可以使用MATLAB的内置函数"wiener2"来去除高斯噪声。

该函数使用维纳滤波器来恢复图像的清晰度。

以下是去除高斯噪声的代码:```matlabdenoised_image = wiener2(noisy_image);imshow(denoised_image);```最后,我们可以将去噪后的图像保存到新的文件中。

假设我们要保存的文件名为"denoised_image.jpg",我们可以使用以下代码来保存图像:```matlabimwrite(denoised_image, 'denoised_image.jpg');```至此,我们已经完成了去除高斯噪声的MATLAB代码。

使用MATLAB进行图像滤波与去噪处理

使用MATLAB进行图像滤波与去噪处理

使用MATLAB进行图像滤波与去噪处理引言:图像处理是现代科技中一个重要的领域,它在许多领域中发挥着关键作用,包括医学影像、遥感图像以及工业检测等。

图像滤波与去噪处理是图像处理中的一个核心问题,它能够提高图像质量、增强图像细节以及减少图像中的噪声。

MATLAB作为一个强大的科学计算软件,在图像处理领域也有着广泛的应用。

本文将介绍使用MATLAB进行图像滤波与去噪处理的方法和技巧。

一、图像滤波的基本概念和原理图像滤波是对图像进行平滑处理或者增强处理的一种方法。

其基本原理是通过在图像上应用一个滤波器,对图像的像素进行加权平均操作,以达到平滑或者增强的效果。

常见的滤波器包括均值滤波器、中值滤波器和高斯滤波器等。

其中,均值滤波器通过计算邻域像素的平均值来进行平滑操作,中值滤波器则通过计算邻域像素的中位数来进行平滑操作,而高斯滤波器则根据高斯函数来计算加权平均值。

在MATLAB中,可以使用imfilter函数来实现不同类型的图像滤波操作。

二、图像去噪的基本概念和原理图像噪声是由于图像获取、传输、存储或者显示等过程中引入的随机干扰信号。

去噪处理旨在恢复出原始图像并减少噪声的影响。

常见的图像去噪方法包括空域滤波方法和频域滤波方法。

其中,空域滤波方法是在图像的空间域上进行滤波操作,常用的方法有均值滤波、中值滤波和双边滤波等。

频域滤波方法则是在图像的频域上进行滤波操作,常用的方法有傅里叶变换和小波变换等。

在MATLAB中,可以使用medfilt2函数和wiener2函数来实现空域滤波方法。

三、MATLAB中的图像滤波和去噪函数MATLAB提供了多种用于图像滤波和去噪的函数,可以根据不同的需求选择合适的函数进行操作。

以下是对几个常用函数的简要介绍:1. imfilter函数:imfilter函数实现了各种图像滤波操作,包括线性和非线性滤波。

该函数可以接受多种滤波器类型,包括方形、圆形和自定义形状的滤波器。

用户可以根据具体需求选择不同的滤波器类型和参数。

MATLAB中的图像滤波和去噪方法

MATLAB中的图像滤波和去噪方法

MATLAB中的图像滤波和去噪方法引言图像处理是计算机视觉和图像分析领域的一个重要组成部分。

在实际应用中,图像往往会受到各种噪声的干扰,因此需要对图像进行滤波和去噪处理,以提升图像的质量和清晰度。

MATLAB作为一款功能强大的科学计算软件,提供了多种图像滤波和去噪的方法,本文将介绍其中的几种方法及其原理和应用。

一、均值滤波均值滤波是一种常见的线性滤波方法,它可以降低图像中的噪声,同时也会导致图像的细节损失。

均值滤波的原理很简单,对于图像中的每个像素点,将其周围的邻域像素取平均值作为该像素的新值。

在MATLAB中,可以使用imfilter函数来实现均值滤波。

二、中值滤波与均值滤波不同,中值滤波是一种非线性滤波方法,它能够有效地去除图像中的椒盐噪声和脉冲噪声,同时保持图像的边缘细节。

中值滤波的原理是对每个像素点的邻域像素进行排序,然后选取排序后的中值作为该像素的新值。

在MATLAB 中,可以使用medfilt2函数来实现中值滤波。

三、高斯滤波高斯滤波是一种常见的线性滤波方法,它通过对图像进行加权平均来平滑图像,并且能够保持图像的边缘信息。

高斯滤波的原理是对图像中的每个像素点,计算其周围邻域像素的权重,并将其与对应的像素值相乘后求和得到新的像素值。

在MATLAB中,可以使用fspecial和imfilter函数来实现高斯滤波。

四、小波去噪小波去噪是一种基于小波变换的非线性滤波方法,它能够有效地降噪,并且能够保持图像的边缘和细节信息。

小波去噪的原理是将图像进行小波变换,然后根据小波系数的大小来过滤和修复图像。

在MATLAB中,可以使用wdenoise函数来实现小波去噪。

五、自适应滤波自适应滤波是一种非线性滤波方法,它能够根据图像的局部特征来自适应地调整滤波参数,从而实现更好的去噪效果。

自适应滤波的原理是对图像中的每个像素点,根据其邻域像素的方差来自适应地调整滤波器的参数,从而实现去噪。

在MATLAB中,可以使用adapthisteq和imfilter函数来实现自适应滤波。

小波去噪matlab程序

小波去噪matlab程序

小波去噪matlab程序
本文介绍了一种使用小波去噪图像的matlab程序,主要步骤如下:
(1)首先从图像获取原始数据,并转换为灰度图像;
(2)接下来进行小波变换,将灰度图片转换为小波系数矩阵;
(3)引入一种基于稀疏性表示的噪声检测剔除技术,从小波系数矩阵中提取出噪声数据;
(4)最后,用剔除噪声后的小波系数矩阵进行逆小波变换,可以得到去噪后的图像数据,这就是小波去噪后的图像。

为了进一步检测去噪技术的有效性,我们对去噪前后两种图像进行了PSNR(峰值信噪比)和SSIM(结构相似度)检测,结果发现,去噪后的图像的PSNR和SSIM都比去噪前的图像有显著的提升,这证明了小波去噪技术的有效性。

总之,本文介绍了一种基于小波去噪的图像处理方法,其所提供的解决方案可以很好地提高图像质量。

因此,小波去噪技术可以在实际应用中发挥重要作用。

Matlab编程实现图像增强与去噪

Matlab编程实现图像增强与去噪

Matlab中为我们提供了大量的函数,以方便我们对设计的算法进行验证,方便我们进行科学研究等等。

使用Matlab处理数字图像也是相当方便的,它给我们提供了很多函数,如读取(imread)、显示(imshow)、存储(imwrite)、直方图均衡化(histeq)......,相当丰富的函数。

图像增强使用直方图均衡化方法,利用Matlab的histeq函数实现。

使用Matlab 自带函数加入椒盐噪声,分别使用低通滤波、中值滤波、同态滤波进行去噪。

下面给出Matlab代码,涉及到的函数如有不清楚的,可以在Matlab命令窗口输入help 函数名,或者doc 函数名,查看帮助。

使用本程序,请新建一个.m文件,并命名为:imenhden.m,保存,将原始的图片与此m文件都放在Matlab当前工作目录下,然后在命令窗口输入:imenhden( 'lena.png');回车即可,其中lena.png为原始图片名。

function [ ] = imenhden( fineName )%% 读入图像I = imread(fineName);figure(1);subplot(2,2,1);imshow(I);title('原图像');%% 直方图均衡化m = 16;H = histeq(I,m);subplot(222);imshow(H,[]);title('均衡后的图像');subplot(223);hist(double(I),m);title('直方图');subplot(224);hist(double(H),m)title('均衡后的直方图');%% 噪声与滤波figure(2)subplot(3,2,1);imshow(I);title('原图像');% 加入椒盐噪声并显示II = imnoise(I,'salt& pepper'); subplot(3,2,2);imshow(II);title('加入椒盐噪声后的图像'); % 低通滤波平滑[B,A] = butter(6,0.2,'low');J = filter(B,A,double(II)); subplot(3,2,3);imshow(J,[]);title('低通滤波平滑');% 中值滤波平滑J = medfilt2(II);subplot(3,2,4);imshow(J,[]);title('中值滤波平滑');% 同态滤波[I0,M] = imread(fineName);%I0 = II;M=[];I1 = log(double(I0)+1);I2 = fft2(I1);N=2;D0=0.05*pi;rh=0.8;r=0.5; [row,col]=size(I2);for m=1:rowfor n=1:colD1(m,n)=sqrt(m^2+n^2);H(m,n)=r+(rh/(1+(D0/D1(m,n))^(2*N))); endendI3=I2.*single(H);I4=ifft2(I3);I5=exp(I4)-1;subplot(3,2,5);imshow(I0,M);title('原图像');subplot(3,2,6);imshow(I5,M);title('同态滤波后的图像');end图1 lena原图像使用如上程序对上图lena图像进行处理,分别得到下图所示的结果:图2 图像增强——直方图均衡化图3 图像去噪效果对比图本篇文章来源于Linux公社网站() 原文链接:/Linux/2014-06/103669.htm。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

function varargout = jiemian(varargin) %返回从函数jiemian.m中得到的参数中变量的数目;传递一个参数中变量的数目给函数jiemian.m。

% JIEMIAN Application M-file for jiemian.fig% FIG = JIEMIAN launch jiemian GUI.% JIEMIAN('callback_name', ...) invoke the named callback.% Last Modified by shijiawei v2.5 24-May-2014 02:45:18if nargin == 0 % LAUNCH GUI %nargin 显示输入变量fig = openfig(mfilename,'reuse'); %打开包含在FIG文件filename.fig中的图形,确保它是可见的并且完全定位在屏幕上。

% Generate a structure of handles to pass to callbacks, and store it.handles = guihandles(fig); %返回一个结构,它包含图像中对象的句柄guidata(fig, handles); %将变量handles存储到fig文件中if nargout > 0 %如果输出变量大于0varargout{1} = fig; %返回figendelseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK %如果varargin{1}是一个字符数组则返回逻辑真(1),否则返回逻辑假(0)。

tryif (nargout) %显示用户提供的输出变量的个数[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard %varargout传递参数中的变量数目elsefeval(varargin{:}); % FEVAL switchyard %**feval函数的求值endcatch %如果出错开始执行catch块disp(lasterr); %%%% lasterr函数查询出错原因。

如果函数lasterr的运行结果为一个空串,则表明组命令1被成功执行了%%%% disp 显示矩阵和文字内容endend%| ABOUT CALLBACKS:%| GUIDE automatically appends subfunction prototypes to this file, and%| sets objects' callback properties to call them through the FEVAL%| switchyard above. This comment describes that mechanism.%|%| Each callback subfunction declaration has the following form:%| <SUBFUNCTION_NAME>(H, EVENTDATA, HANDLES, VARARGIN)%|%| The subfunction name is composed using the object's Tag and the%| callback type separated by '_', e.g. 'slider2_Callback',%| 'figure1_CloseRequestFcn', 'axis1_ButtondownFcn'.%|%| H is the callback object's handle (obtained using GCBO).%|%| EVENTDATA is empty, but reserved for future use.%|%| HANDLES is a structure containing handles of components in GUI using%| tags as fieldnames, e.g. handles.figure1, handles.slider2. This%| structure is created at GUI startup using GUIHANDLES and stored in%| the figure's application data using GUIDATA. A copy of the structure%| is passed to each callback. You can store additional information in%| this structure at GUI startup, and you can change the structure%| during callbacks. Call guidata(h, handles) after changing your%| copy to replace the stored original so that subsequent callbacks see%| the updates. Type "help guihandles" and "help guidata" for more%| information.%|%| VARARGIN contains any extra arguments you have passed to the%| callback. Specify the extra arguments by editing the callback%| property in the inspector. By default, GUIDE sets the property to:%| <MFILENAME>('<SUBFUNCTION_NAME>', gcbo, [], guidata(gcbo))%| Add any extra arguments after the last argument, before the final%| closing parenthesis.% --------------------------------------------------------------------function varargout = LoadPush_Callback(h, eventdata, handles, varargin)%回调函数%返回从函数()中得到的参数中变量的数目。

global im_original im_noised im_filtered%global:定义全局变量%原始图像,噪声图像,去噪图像[filename, pathname] = uigetfile('*.bmp;*.pgm;*.tif;*.jpg;*.*', 'Load input image');%读取文件if isequal(filename,0) | isequal(pathname,0) %确定数组是否数值相等,如果输入数组具有相同的维数、相同的类型并且具有相同的内容则返回逻辑真(1),否则返回逻辑假(0)。

disp('User pressed cancel')%disp:显示elsedisp(['User selected ', fullfile(pathname, filename)]) %显示用户选项,显示路径名称和文件文件endim_original=imread(filename); %从图形文件中读取图像。

set(handles.Or_image,'HandleVisibility','OFF');%handles:句柄axes[坐标]的句柄不可见%注释掉影响不大set(handles.Out_image,'HandleVisibility','OFF'); %注释掉影响不大%set(handles.Denoised_image,'HandleVisibility','OFF');set(handles.Or_image,'HandleVisibility','ON'); %注释掉影响不大axes(handles.Or_image); %设置现有轴handles.Or_image为当前轴。

imshow(im_original); %显示原始图像colormap(gray(256)); %将当前的颜色图设置为256灰度axis equal;%让图像的大小与框架吻合axis tight;%同上axis off;%把数轴关掉set(handles.Or_image,'HandleVisibility','OFF');%axes handles:句柄不可见set(handles.Or_image,'XTickLabel',' ','YTickLabel',' '); %xtick是刻度(小竖线);xticklabel 刻度值(竖线下面的数值)。

% --------------------------------------------------------------------function varargout = popupmenu1_Callback(h, eventdata, handles, varargin) %【Add Noise】下拉菜单% --------------------------------------------------------------------function varargout = popupmenu3_Callback(h, eventdata, handles, varargin) %【Method】下拉菜单% --------------------------------------------------------------------function varargout = ApplyPush_Callback(h, eventdata, handles, varargin) %【apply】按钮global im_original im_noised im_filtered %定义全局变量imnoise_type = get(handles.popupmenu1,'Value'); % selected noise typeswitch imnoise_type %切换噪声类型case { 1 } %加入噪声im_noised = gaussian_bai(im_original); %加入高斯白噪声case { 2 }im_noised = salt(uint8(im_original)); %加入椒盐噪声case { 3 }im_noised = speckle(uint8(im_original)); %加入乘性噪声case { 4 }im_noised = poisson(im_original); %加入泊松噪声endmethod_number = get(handles.popupmenu3,'Value'); % selected filter methodswitch method_numbercase { 1 }im_filtered = meanfilter(im_noised);%执行二维的均值滤波case { 2 }im_filtered = medfilter3(im_noised);%执行二维的中值滤波case { 3 }im_filtered = medfilter5(im_noised);%执行5*5窗口二维的中值滤波case { 4 }im_filtered = medfilter7(im_noised); %执行7*7窗口二维的中值滤波case { 5 }im_filtered = wienerfilter(im_noised);%执行二维的维纳滤波case { 6 }endset(handles.noised_image,'HandleVisibility','ON'); %axes[坐标]的句柄可见axes(handles.noised_image); %设置现有轴handles.noised_image为当前轴。

相关文档
最新文档