matlab 图像灰度级转[0,1], Normalize处理, 提升/降低所有元素若干倍, .^的运用(点乘与乘)
来源:互联网 发布:芭比娃娃淘宝 编辑:程序博客网 时间:2024/05/18 01:32
声明:笔者关于matlab主题的帖子内容均来自于课堂作业,课堂笔记以及自己在学习过程中查询matlab官方文档获得的学习经验,分享到CSDN一方面是作为自己的学习笔记,另一方面希望可以帮助到和我一样的初学者。题目来自于笔者在美帝学习CS的作业,代码属于笔者原创,转载请注明出处,禁止抄袭。哈哈说的有点严重是因为内容来自美帝课堂,为了博主不被遣返,希望各位看官理解。
题目:
1. 把灰度图像B转换成C,要求把B中的元素的值normalize到[0,1],也就是说B中原来最大的值变成1,C要求是double类型。
2. 把C的左1/4列所有元素变成原来的1.25倍,中间两个1/4不变,右边1/4变成1.25倍。
3. 不允许使用循环
代码:
MaxValue = double(max(max(B)));C = double(B)/maxValue;figure(3);imshow(C)title('Normalized Grayscale Image')oriD1 = C(:,1:col/4);D1 = oriD1.^0.75;D2 = C(:,col/4+1:3*col/4);oriD3 = C(:,3*col/4+1:col);D3 = oriD3.^1.25;D = [D1,D2,D3];figure(4);imshow(D)title('Processed Grayscale Image')
值得注意的地方:
1. 要求把B最大元素变成1,也就是说将原矩阵整体除以B的最大值。要注意在做除法前要把B转成double类型,因为图像读入时默认一般是uint8类型,如果这里的B是uint8的话,每个元素除以最大值的结果是一片0,C是黑色的一坨。
2. 将一个大矩阵分成几部分可以使用冒号,例如我在截取左1/4的时候oriD1 = C(:,1:col/4); 这句话是说截取C中1到col/4列的所有行的元素。
3. 提升或者降低某个矩阵所有元素的灰度级可以使用./和.^来处理。
比如D1 = oriD1.^0.75; 这句话是说把oriD中的所有元素变成原来灰度级的0.75倍。
注意要使用.^不要忽略了这个. 因为.^和^是不一样的
不加点的^是矩阵乘法,也就是在线性代数课程中学习过的普通矩阵相乘的矩阵乘法,要求前一个矩阵的列数等于后一个矩阵行数;
加点的.^是数组运算,是点乘,也就是说前后俩矩阵对应的元素分别相乘。
运行结果:
- matlab 图像灰度级转[0,1], Normalize处理, 提升/降低所有元素若干倍, .^的运用(点乘与乘)
- matlab乘与点乘的区别 (*与.* ^与.^)
- matlab乘与点乘的区别 (*与.* ^与.^)
- matlab乘与点乘的区别 (*与.* ^与.^)
- matlab乘与点乘的区别
- Matlab 乘与点乘
- matlab中的点乘与不加点的乘
- matlab中点乘与乘的区别
- 向量的点乘与叉乘(转载)
- 向量的点乘与叉乘
- 向量的点乘与叉乘
- 向量的点乘与叉乘
- 向量的点乘与叉乘
- 向量的点乘与叉乘
- 向量的点乘与叉乘
- 向量的点乘与叉乘
- 矩阵的点乘与叉乘
- 点乘与叉乘
- 基于MYCAT的MYSQL主从与读写分离配置详解与示例
- 做毕设(十三)——改首页,设置类型
- android-studio报错Error:Execution failed for task
- type命令
- js Array.prototype.reduce()
- matlab 图像灰度级转[0,1], Normalize处理, 提升/降低所有元素若干倍, .^的运用(点乘与乘)
- vs2013 编译问题c++
- iptables之NAT端口转发设置
- 简单BP神经网络分类手写数字识别0-9
- JAVA进程诡异消失,oom killer干的
- 170926 windows 下安装pydot与graphviz
- 219. Contains Duplicate II
- Jquery图片放大
- PHP语法笔记