matlab对图像的开操作问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab对图像的开操作问题相关的知识,希望对你有一定的参考价值。
function close0207(I,thresh,element)
% 本程序能够对灰度图像先进行二值化,再进行闭操作
% 本程序先调用膨胀函数,再调用腐蚀函数,实现闭操作
% 作者;archiless lorder
% 一,调用膨胀函数
[F,E]=dilate0207simple(I,thresh,element);
% 二,调用腐蚀函数
C=erode0207simple(F,1,element);
% 三,输出图像
figure,subplot(221),imshow(I),title('原图像');
subplot(222),imshow(E),title('二值化后的图像');
subplot(223),imshow(C),title('闭操作后的图像');
--------------------------------------------------------
按照以上这段运行不成功,想请教一下thresh和element应该是什么?
谁能给我一段运行成功的开操作程序?
matlab里面有开操作的程序啊!
imopen
命令行输入"help imopen",看帮助吧! 参考技术A thresh应该是个阈值,
element应该是个处理图像的最小单元值。
I是读入的图像。
Matlab 图像平移旋转缩放镜像
今天学习了用Matlab实现对图像的基本操作。在Matlab中,图像是按照二维矩阵的形式表示的。所以对图像的操作就是对矩阵的操作。
对图像进行缩放、平移、旋转,都可以转化为矩阵的运算。
关于变换矩阵的构造,请参考:
《 [gym 101047C Robotics Competition] 矩阵快速幂求解点旋转平移N次之后的位置》
参考原图:
1. 图像平移
init = imread(‘Fig3.tif‘); % 读取图像
[R, C] = size(init); % 获取图像大小
res = zeros(R, C); % 构造结果矩阵。每个像素点默认初始化为0(黑色)
delX = 50; % 平移量X
delY = 50; % 平移量Y
tras = [1 0 delX; 0 1 delY; 0 0 1]; % 平移的变换矩阵
for i = 1 : R
for j = 1 : C
temp = [i; j; 1];
temp = tras * temp; % 矩阵乘法
x = temp(1, 1);
y = temp(2, 1);
% 变换后的位置判断是否越界
if (x <= R) & (y <= C) & (x >= 1) & (y >= 1)
res(x, y) = init(i, j);
end
end
end;
imshow(uint8(res)); % 显示图像
2. 图像旋转
init = imread(‘Fig3.tif‘); % 读取图像
[R, C] = size(init); % 获取图像大小
res = zeros( R, C); % 构造结果矩阵。每个像素点默认初始化为0(黑色)
alfa = -15 * 3.1415926 / 180.0; % 旋转角度
tras = [cos(alfa) -sin(alfa) 0; sin(alfa) cos(alfa) 0; 0 0 1]; % 旋转的变换矩阵
for i = 1 : R
for j = 1 : C
temp = [i; j; 1];
temp = tras * temp;% 矩阵乘法
x = uint16(temp(1, 1));
y = uint16(temp(2, 1));
% 变换后的位置判断是否越界
if (x <= R) & (y <= C) & (x >= 1) & (y >= 1)
res(i, j) = init(x, y);
end
end
end;
imshow(uint8(res)); % 显示图像
3. 图像缩放
init = imread(‘Fig3.tif‘); % 读取图像
[R, C] = size(init); % 获取图像大小
timesX = 3; % X轴缩放量
timesY = 3; % Y轴缩放量
res = zeros(timesX * R, timesY * C); % 构造结果矩阵。每个像素点默认初始化为0(黑色)
tras = [1/timesX 0 0; 0 1/timesY 0; 0 0 1]; % 缩放的变换矩阵
for i = 1 : timesX * R
for j = 1 : timesY * C
temp = [i; j; 1];
temp = tras * temp; % 矩阵乘法
x = uint8(temp(1, 1));
y = uint8(temp(2, 1));
% 变换后的位置判断是否越界
if (x <= R) & (y <= C) & (x >= 1) & (y >= 1)
res(i, j) = init(x, y);
end
end
end;
imshow(uint8(res)); % 显示图像
4. 图像镜像(水平)
init = imread(‘Fig3.tif‘);
[R, C] = size(init);
res = zeros(R, C);
for i = 1 : R
for j = 1 : C
x = i;
y = C - j + 1;
res(x, y) = init(i, j);
end
end
imshow(uint8(res));
以上是关于matlab对图像的开操作问题的主要内容,如果未能解决你的问题,请参考以下文章