資源簡介
關于圖像預處理部分的matlab代碼,包含常見的灰度化、均衡化、閾值分割以及形態學操作等等
代碼片段和文件信息
%預處理過程
clear?all;
close?all;
clc;
I=imread(‘F:\image?process?works\dzy\hhh\bjx2.jpg‘);
I=rgb2gray(I);
subplot(221)imshow(I)title(‘灰度圖‘);
subplot(222)imhist(I)title(‘灰度直方圖‘);
I1=histeq(I);
subplot(223)imshow(I1)title(‘直方圖均衡化‘);
subplot(224)imhist(I)title(‘直方圖‘);
%%?線性平滑濾波器
I2=imnoise(I‘salt?&?pepper‘0.02);
%?figure
%?imshow(I2)title(‘添加椒鹽噪聲的圖像‘);
k1=filter2(fspecial(‘average‘3)I2)/255;?%進行3*3模板平滑濾波
k2=filter2(fspecial(‘average‘5)I2)/255;?%進行5*5模板平滑濾波
k3=filter2(fspecial(‘average‘7)I)/255;?%進行7*7模板平滑濾波
k4=filter2(fspecial(‘average‘9)I2)/255;?%進行9*9模板平滑濾波
figure
subplot(221)imshow(k1);title(‘3*3模板平滑濾波‘);
subplot(222)imshow(k2);title(‘5*5模板平滑濾波‘);
subplot(223)imshow(k3);title(‘7*7模板平滑濾波‘);
subplot(224)imshow(k4);title(‘9*9模板平滑濾波‘);
%%
%中值濾波器
I3=imnoise(I‘salt?&?pepper‘0.02);
figure
subplot(231)imshow(I);title(‘原圖像‘);
subplot(232)imshow(I3);title(‘添加椒鹽噪聲圖像‘);
k1=medfilt2(I3);???????%進行3*3模板中值濾波
k2=medfilt2(I3[55]);?%進行5*5模板中值濾波
k3=medfilt2(I3[77]);?%進行7*7模板中值濾波
k4=medfilt2(I3[99]);?%進行9*9模板中值濾波
subplot(233)imshow(k1);title(‘3*3模板中值濾波‘);
subplot(234)imshow(k2);title(‘5*5模板中值濾波‘);
subplot(235)imshow(k3);title(‘7*7模板中值濾波‘);
subplot(236)imshow(k4);title(‘9*9模板中值濾波‘);
%%
%用Sobel算子和拉普拉斯對圖像銳化
I=imread(‘F:\image?process?works\dzy\hhh\bjx2.jpg‘);
figure
subplot(221)imshow(I)title(‘原始圖像‘);
axis([501920501080]);
grid?on;???%顯示網格線
axis?on;???%顯示坐標系
I1=im2bw(I);
subplot(222)imshow(I1)title(‘二值圖像‘);
axis([501920501080]);
grid?on;???%顯示網格線
axis?on;???%顯示坐標系
H=fspecial(‘sobel‘);???%選擇sobel算子?
J=filter2(HI1);???????%卷積運算
subplot(223)imshow(J)title(‘sobel算子銳化圖像‘);
axis([501920501080]);
grid?on;???%顯示網格線
axis?on;???%顯示坐標系
h=[0?1?01?-4?10?1?0];???%拉普拉斯算子
I1=double(I1);
J1=conv2(I1h‘same‘);????%卷積運算
subplot(224)imshow(J1)title(‘拉普拉斯算子銳化圖像‘);
axis([501920501080]);
grid?on;???%顯示網格線
axis?on;???%顯示坐標系
%%
%梯度算子檢測邊緣
I=imread(‘F:\image?process?works\dzy\hhh\bjx2.jpg‘);
figure
subplot(231)imshow(I)title(‘原始圖像‘);
axis([501920501080]);
grid?on;??????????????????????????%顯示網格線
axis?on;??????????????????????????%顯示坐標系
I1=im2bw(I);
subplot(232)imshow(I1)title(‘二值圖像‘);
axis([501920501080]);
grid?on;?????????????????????????%顯示網格線
axis?on;?????????????????????????%顯示坐標系
I2=edge(I1‘roberts‘);
subplot(233)imshow(I2)title(‘roberts算子分割結果‘);
axis([501920501080]);
grid?on;??????????????????????????%顯示網格線
axis?on;??????????????????????????%顯示坐標系
I3=edge(I1‘sobel‘);
subplot(234)imshow(I3)title(‘sobel算子分割結果‘);
axis([501920501080]);
grid?on;??????????????????????????%顯示網格線
axis?on;??????????????????????????%顯示坐標系
I4=edge(I1‘Prewitt‘);
subplot(235)imshow(I4)title(‘Prewitt算子分割結果‘);
axis([501920501080]);
grid?on;??????????????????????????%顯示網格線
axis?on;??????????????????????????%顯示坐標系
%%
%LOG算子檢測邊緣
I=imread(‘F:\image?process?works\dzy\hhh\bjx2.jpg‘);
subplot(221)imshow(I)title(‘原
- 上一篇:改進的均值濾波matlab代碼
- 下一篇:FSOA算法的代碼實現MATLAB
評論
共有 條評論