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]);
axis on; %显示坐标系
J imadjust(I1,[0.10.5],[]);%局部拉伸,把[0.10.5]内的灰度拉伸为[0 1]
subplot(2,2,3),imshow(J);
title('线性变换图像[0.10.5]');
axis([50,250,50,200]);
grid on; %显示网格线
axis on; %显示坐标系
K imadjust(I1,[0.3 0.7],[]);%局部拉伸,把[0.3 0.7]内的灰度拉伸为[0 1]
subplot(2,2,4),imshow(K);
title('线性变换图像[0.3 0.7]');
axis([50,250,50,200]);
grid on; %显示网格线
axis on; %显示坐标系
3.非线性变换
MATLAB程序实现如下:
I imread('xian.bmp');
I1 rgb2gray(I);
subplot(1,2,1),imshow(I1);
title('灰度图像');
axis([50,250,50,200]);
grid on; %显示网格线
axis on; %显示坐标系
J double(I1);
J 40*(log(J+1));
H uint8(J);
subplot(1,2,2),imshow(H);
title('对数变换图像');
axis([50,250,50,200]);
grid on; %显示网格线
axis on; %显示坐标系
4.直方图均衡化
MATLAB程序实现如下:
I imread('xian.bmp');
I rgb2gray(I);
figure;
subplot(2,2,1);
imshow(I);
subplot(2,2,2);
imhist(I);
I1 histeq(I);
figure;
subplot(2,2,1);
imshow(I1);
subplot(2,2,2);
imhist(I1);
5.线性平滑滤波器
用MATLAB实现领域平均法抑制噪声程序:
I imread('xian.bmp');
subplot(231)