【数字图像处理实验】Matlab Exercises and Image Fundamentals(内含遇到的gray.m的报错问题)

实验题目

第一题很简单,就是matlab矩阵的简单应用和函数编写的简单应用

主要是第二题。

很多人一开始想到的是这个思路:

1.用matlab里的构造函数

2.用plot画图功能画圆

3.再用fill函数填色

但这种方法最终会发现根本填不上灰色,哈哈哈。

就算不是灰色,一开始彩色的,再用将图像变成灰度图函数也发现不行,和题目所给的图不一样。

正确思路是应用一个叫 mat2gray 的函数,这个函数从名字可以看出功能:matrix(矩阵) to gray(灰度图),其内涵机理其实是将一个给定的矩阵经过运算,得到一个所有值都为0~1之间的矩阵,不改变矩阵大小,(因为灰度图转化为矩阵之后要求数值为0~1,0是黑色,1是白色。)

最后mat2gray 函数将处理后的矩阵用imshow()函数即可显示出来了。

现在最难的就是得到题目条件要求的初始矩阵。

1.先构建一个至少大于100的方阵,背景的值都设为64.

2.接着用2个for循环遍历方阵,再if条件限制半径为50或100的圆内赋给不同的灰度值。

3.再构建一个一摸一样的方阵用[-16,16]的随机数赋值作为噪声矩阵。

4.将两个方阵线性相加。

5.显示图像即可。

具体matlab代码如下:

background=zeros(255);%定义一个255×255矩阵,每个像素灰度值都设为64
background(:,:)=64;
for a=1:255%将50像素为半径的圆内灰度值改为192,半径50到100之间的圆环灰度值设为128
    for b=1:255
        if (a-128)^2+(b-128)^2 <= 10000
            background(a,b)=128;
        end
        if (a-128)^2+(b-128)^2 <= 2500
            background(a,b)=192;
        end
    end
end
subplot(1,2,1);%在左边显示没加噪声的图像
I1=mat2gray(background);
imshow(I1);
subplot(1,2,2);%在右边显示加了噪声的图像
noise=randi([-16,16],255);
background=background+noise;
I2=mat2gray(background);
imshow(I2);

运行结果如下:左边为没加噪声的图像,右边是加了随机均匀噪声的图像。

 实验过程中遇到的玄学问题:

我将脚本命名为 gray.m 之后,运行总是报错,不能显示figure窗口。

后经过百度才知道,原来是因为matlab本身工具箱toolbox里就有一个gray.m的文件,而且我还保存到了matlab安装文件夹下了,才会出现玄学错误。

防止此类问题发生的方法:

1.不要把脚本命名为与matlab本身工具箱toolbox里有的文件一样的名字。

2.不要把脚本保存在安装目录下,最好放在另一个独立的工作区里。

 哈哈。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值