2.图像作为函数 | 标量、函数、混合图像_6
目录
标量
手写函数
混合图片
标量
在前面的例子中,我们看到了如何通过数字划分图像。
>> dolhphin = imread('dolphin.png');>> dolhphin / 2
除以2与乘以0.5相同。
>> dolphin * 0.5
写这两个的顺序也无关紧要。
>> 0.5 * dolphin
常数0.5称为标量,这可能是因为它缩放了图像的值。
让我们看看与原始图像相比结果如何:
将强度值减半,明显变暗。
请注意,我们可以乘以任意数字,甚至大于1。
将强度值乘以1.5可使图像更亮:
>> result = dolphin * 1.5;
>> imshow(resule);
运行结果:
我们在某些地方看到同样的褪色效果。这是由于高于255的图像值在该限制下被截断。
手写函数
在Octave中,我们可以编写一个函数来执行常见操作。
让我们把缩放变成一个函数。
>> function result = scale(img, value)result = value .* img;endfunction
我们通过输入单词function来编写函数,后面跟着返回值的变量名。
然后是等号,函数的名称和括号中的参数。
接下来是函数体。在这种情况下,我们希望结果是值和图像的乘积。
为了确保我们正在执行逐元素的乘法,让我们将" * "改为" .* "。
当其中一个值是标量时,这没有任何区别,但是当两个被乘的量是向量或矩阵时," * "和" .* "会产生不同的结果。
我们通过输入endfunction来结束这个功能。
让我们加载一个图像并尝试这个功能。
>> function result = scale(img, value);value .* img;endfunction
>>
>> dolphin = imread('dolphin.png');
>> dolphin_sc = scale(dolphin, 0.5);
>> imshow(dolphin);
>> imshow(dolphin_sc);
混合图片
在一起,并通过缩放器乘以图像强度值,让我们重新审视我们平均两个图像的例子。
我们看到除以2的除法可以重写为乘以0.5。
>> dolphin = imread('dolpthin.png');
>> bicycle = imread('bicycle.png');
>>
>> result = dolphin / 2 + bicycle / 2;
>> result = 0.5 * dolphin + 0.5 * bicycle;
现在,这导致图像具有相等的部分海豚和等量的自行车。
如果我们想改变这些比率怎么办?我们想要更多的海豚。
>> result = 0.75 * dolphin + 0.5 * bicycle;
强度值与原始图像相同,我们应该确保这些权重之和为1。通常,这被称为混合两个图像。
>> result = 0.75 * dolphin + 0.25 * bicycle;
让我们看看它的样子。
是的,我们确实从海豚图像中看到了更多的冲浪,但这有点难以辨别。
我们换一种稍微远一点的方式怎么样?
>> result = 0.85 * dolphin + 0.15 * bicycle;
更多海豚了。
我希望我们有一个函数来做这个,我们可以这样调用它。
你能帮我写这个功能吗?我来帮你。将代码放在函数体中。请记住,要返回一些内容,请将其分配给输出变量。
另请注意,a和b是要混合的两个图像,alpha是要应用于a的权重。
实现该功能后,使用不同的alpha值进行测试。
我们知道我们想要将A乘以α,并且由于一些权重需要为1,我们将B乘以α减去α。
>> funciton output = blend(a, b, alpha)alpha * a + (1 - alpha) * bendfunction
>>
>> dolphin = imread('dolphin.png');
>> bicycle = imread('bicycle.png');
>>
>> result = blend(dolphin, bicycle, 0.85);
>> imshow(result);
最后我们将它分配给输出变量,就这样,让我们看看我们得到了什么。
好的,和以前一样,现在看看改变混合权重是多么容易。
例如,我想要更少的海豚和更多的自行车。
>> result = blend(dolphin, bicycle, 0.25);
>> imshow(result);
好了。几乎看起来街上有水。
这种获取两个图像加权和的方法是alpha混合的基础。
——学会编写自己的代码,才能练出真功夫。
2.图像作为函数 | 标量、函数、混合图像_6相关推荐
- 计算机视觉之混合图像(Hybrid)
这是之前做过的一个关于实现Hybrid Image的小项目,有错误及不足的地方还请批评指正- 怎么理解图像的高低频? 图像的低频部分可以理解为"轮廓",比如人脸的脸型. 图像的高频 ...
- matlab没有定义标量,SQL创建了标量函数但显示不存在,如何解决
公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:SQL创建了标量函数但显示不存在,如何解决?回答:使用修改部分打开的自定义函数,说明函数创建成功.至于加红色的波浪线,可以不用理会, ...
- [转载] OpenCV-Python图像位与运算bitwise_and函数详解
参考链接: Python中的numpy.bitwise_and ☞ ░ 前往老猿Python博客 https://blog.csdn.net/LaoYuanPython ░ 一.概述 图像的与运算主要 ...
- Matlab函数学习---imref2d函数(将二维图像转到世界坐标)
实例1:实现二维图像TIF到世界坐标系的转换(设定世界坐标范围大小) 实例2:实现二维图像DCM到世界坐标系的转换(设定世界坐标范围大小和分辨率) 本例程的配套完整源码和图片素材下载 imref2d函 ...
- OpenCV-Python图像位与运算bitwise_and函数详解
☞ ░ 前往老猿Python博客 https://blog.csdn.net/LaoYuanPython ░ 一.概述 图像的与运算主要用于获取某个图像中感兴趣的部分,是针对两个图像矩阵数组或一个数组 ...
- matlab 图像基本矩阵,MATLAB基本的使用方法归纳(图像,矩阵及函数)
读取图像:用imread函数读取图像文件,文件格式可以是TIFF.JPEG.GIF.BMP.PNG等.比如 >> f = imread('chestxray.jpg'); 读进来的图像数据 ...
- matlab中Regionprops函数详解——度量图像区域属性
声明:原文链接https://blog.csdn.net/langb2014/article/details/49886787点击打开链接,仅学习使用,写的很不错. Regionprops:用途是ge ...
- 图像金字塔与resize函数
图像金字塔 将一层层图像比喻成金字塔,层级越高,图像越小,分辨率越低. 高斯金字塔:向下降采样: 拉普拉斯金字塔:向上采样,通过金字塔低层图像重建上层未采样图像: 金字塔的产生 用高斯核对图像进行卷积 ...
- 有必要总结一下:matlab图像灰度调整——imadjust函数的使用
参考:https://blog.csdn.net/Ibelievesunshine/article/details/79958899 在MATLAB中,通过函数imadjust是一个计算机函数,该函数 ...
- python使用matplotlib可视化线图(line plot)、使用arrow函数在matplotlib可视化图像中添加箭头(drawing arrows in matplotlib)
python使用matplotlib可视化线图(line plot).使用arrow函数在matplotlib可视化图像中添加箭头(drawing arrows in matplotlib) 目录
最新文章
- mysql8.0取消授权_mysql8创建用户、删除用户、授权、取消授权
- arduino串口监视器显示nan_使用Arduino开发板制作摩尔斯电码生成器
- (z)如何在SignalTAP II中保留特定节点
- c语言控制数码管显示时间,数码管显示时间整点报时C语言实例
- 帮助文件html打不开,chm帮助文件打不开全是代码?这几种解决方法了解一下
- Mybatis_接口编程
- 你计算机使用中间层服务器,k3中间层的配置及应用问题.doc
- 面试篇---jq扩展自定义方法
- wav怎么转换成mp3?
- 如何用xcode写c++
- Linux——clamAV查杀病毒与防护
- 企鹅号怎么赚钱,企鹅号怎么运营,企鹅号怎么写爆文
- 企业微信如何通过红包活动引流?
- JavaScript-PC端网页特效
- 桌面计算机未响应怎么办,电脑桌面假死(点击无反应)怎么解决?试试这三种处理方法吧...
- VS2019读取文件中文乱码问题解决
- 使用 PhpStorm 来开发和 Debug Laravel Sail 项目
- 如何使用Mac的媒体键在DisplayPort,HDMI或Thunderbolt监视器上调整扬声器音量
- 免费的网上商城商品管理系统
- Socket.io 的使用
热门文章
- 【华为大咖分享】10.DevOps敏捷测试之道(后附PPT下载地址)
- oracle克隆方式安装,克隆Oracle实现快速安装数据库软件
- oracle数据库看开销,【Database】AIX系统下跟踪开销大的Oracle数据库进程
- java 1 0_【Java】1.0 开发环境
- C++ STL容器vector篇(三) vector容器大小和数组大小, 插入和删除元素, 存储和读取元素
- 机器学习十大经典算法之AdaBoost
- 织梦网站服务器配置,织梦本地服务器配置
- tplink软件升级有用吗_如何升级路由器教程:TPLink刷DDWRT更新固件
- C/C++求一个整数的二进制中1的个数
- 使用displsy:flex + overflow:hidden时子元素被压缩