热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

matlab图像灰度值变换至指定范围,求转换方程

声明:笔者关于matlab主题的帖子内容均来自于课堂作业,课堂笔记以及自己在学习过程中查询matlab官方文档获得的学习经验,分享到CSDN一方面是作为自己的学习笔记,另一方面希望可以帮助到和我
声明:笔者关于matlab主题的帖子内容均来自于课堂作业,课堂笔记以及自己在学习过程中查询matlab官方文档获得的学习经验,分享到CSDN一方面是作为自己的学习笔记,另一方面希望可以帮助到和我一样的初学者。题目来自于笔者在美帝学习CS的作业,代码属于笔者原创,转载请注明出处,禁止抄袭。哈哈说的有点严重是因为内容来自美帝课堂,为了博主不被遣返,希望各位看官理解。

题目:
自定义一个Scaling函数区实现如下功能:将原图的灰度值范围规范到用户指定的范围,并绘制转换方程的图像。

函数原型为:function [scaledIm, transFunc] = Scaling(inputIm, range)

其中:inputIm为输入的图像,range为指定的灰度值新范围。scaledIm为处理后的图像,transFunc为一个包含n个元素的行或列向量,n为原图像的灰度值的最大值-最小值+1(即原图灰度值范围),该向量的第一个元素应该是新图像灰度值的最小值,最后一个元素为新图像的灰度值的最大值。

要求:1.输入和输出的图像都是uint8类型。2. 对用户输入的范围作有效性验证,如果不符合(0,255)要给出错误提示。

举例说明:
为了方便理解这个题目要做的事情是什么,博主这里贴出自己举的例子。

这里写图片描述

代码实现:

function [scaledIm, transFunc] = Scaling(inputIm, range)

 scaledIm = inputIm;
 [row, col] = size(inputIm);  % get the size 

 % get the input range
 rangeLow = double(range(1));
 rangeHigh = double(range(2));

 % Determine if the input range is valid
 % If not valid, return
 if rangeLow<0 || rangeHigh>255 || rangeLow>255 || rangeHigh<0 || rangeLow>rangeHigh
     disp('Out of range! Range is between 0 and 255');
     return;
 end

 % get the max, min and range of inputIm
 maxIm = double(max(max(inputIm)));
 minIm = double(min(min(inputIm)));
 % n is the original range of max and min, used to cpmpute the transform function
 n = maxIm - minIm + 1;

 % calcaulate the slope and constant of transformation function
 % y = kx + b
 k = ( rangeHigh - rangeLow )/( maxIm - minIm );
 b = rangeHigh - maxIm * k;

 % Transform inputIm to scaledIm
 for i = 1 : row
     for j = 1 : col
         scaledIm(i,j) = uint8( k * double(inputIm(i,j)) + b);
     end
 end

 % Display vector transfunc
 transFunc =  zeros(1,n);
 for i = 1 : n
     transFunc(i) = (minIm + i - 1) * k + b ;
 end

主函数为:

[scaledFood,transFunc] = Scaling(food,[0 255]);
figure(1);
subplot(1,2,1);imshow(scaledFood);title('Scaled food');
subplot(1,2,2);plot(transFunc);
xlabel('orignal value');
ylabel('transfered value');

运行结果:

这里写图片描述

这里是规范化之前的原图,可以看到明显的区别。

这里写图片描述


推荐阅读
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
author-avatar
傻瓜等傻子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有