Matlab.图像处理设计-曼陀罗图片绘制

Matlab.图像处理设计-曼陀罗图片绘制

【程序设计】
本次设计的内容是用Matlab.绘制曼陀罗图形,通过在Matlab.中对给定形状的图片进行移动、旋转和叠加等方式来实现。
设计中用到了二值化处理、图片移动处理、图片旋转处理、图片叠加处理、输出图像等五种图像处理方法。
【程序框图】
在这里插入图片描述
【程序解读】
首先,进行测试图片的二值化处理步骤,程序如下:
Thresh = graythresh(Test0);
R=im2bw(Round,Thresh);
R0=imcomplement®;
figure(1);imshow(R0);title(‘原始图像’);
其中 ‘graythresh’ 函数是使用最大类间方差法找到测试图片灰度的合适的阈值,接着用 ‘im2bw’ 函数将测试图片转化为二值图像。为了方便投影,用 ‘imcomplement’
原图为黑色背景,以下所有图片为了打印方便再次进行反相处理 函数将图像黑白反转。下侧为处理后的二值图像。
在这里插入图片描述

接着,对图形进行移动,这里采用将圆从图片(1024x1024)中心点向下移动(240)像素点为标准程序如下:
[M,N]=size(R0);g=zeros(M,N);
a=240;b=0;
for i=1:M
移动前
for j=1:N
if((i-a>0)&(i-a<M)&(j-b>0)&(j-b<N))
g(i,j)=R0(i-a,j-b);
else
g(i,j)=0;
240Pixel
end
end
end
figure(2);imshow(logical(g));title(‘平移后的图像’);
移动后
程序通过对图片的重新采样达到移动圆的目的,为方便观察将移动前与移动后的图像放在同一张图片中,可以通过改变(a ; b)参数改变移动的方向,下边为处理后的图像。
在这里插入图片描述
最后,对移动后的图片沿着图片中心点旋转,每次旋转6度,旋转一周60次。将每次旋转后的图片进行累加最终得出一副完整的曼陀罗图片,程序如下:

R1=im2bw(g,thresh);
R5=zeros(M,N);
for k=1:60
j=k*6;
R4=imrotate(R1,j,‘bicubic’,‘crop’);
R5=or(R4,R5);
end
figure(4);imshow(R5);title(‘旋转叠加(三次内插)’);

采用三次内差法对旋转的图形进行重采样以达到最佳的显示效果,可以通过改变(for k=1:60; j=k*6)的参数来改变旋转次数和每次旋转的角度,右侧为叠加后的最终图片。
在这里插入图片描述

【分析讨论】
在设计中遇到了图像重新采样的问题,最开始使用了 ‘双线性插值法’ 对旋转的图像进行重采样。产生了比较明显的像素丢失,如下图的极端情况。在多次旋转中损失了大量的像素。程序如下:
for k=1:60
R2=imrotate(R2,6,‘bilinear’,‘crop’);
R3=or(R2,R3);
end
在这里插入图片描述
这里每次旋转都会重新采样前一次旋转的图片造成了大量的像素点丢失,需要重新设计新的算法。
最终确定了一个可行的算法:每次旋转都使用初始的图片赋予不同的旋转角度。
程序如下:
R5=zeros(M,N);
for k=1:60
j=k*6;
R4=imrotate(R1,j,‘bicubic’,‘crop’);
R5=or(R4,R5);
end
同时使用 ‘三线性插值法’ 对旋转的图像进行重采样,使图像获得更好的现实效果。这里使用了三角形进行演示。
在这里插入图片描述

对于采用 ‘双线性插值’ 和 ‘三线性插值’ 所产生的采样问题这里用图片表示出来,我们用上述程序分别使用两种方法导出图片如下,并截取其中一部分来观察。
在这里插入图片描述

可以看到两种采样方法产生的效果截然不同,最终采用 ‘三线性插值法’ 来导出平滑的图像。
但是 ‘三线性插值法’ 的处理速度并不是特别快,我们可以先采用 ‘最邻近法’ 对图片进行采样,之后对导出图片进行柔和化处理,得出一张柔和化后的图像,这时得到的图片在视觉效果上非常好。效果对比如下:
在这里插入图片描述

新的处理方法的速度有了显著的提升,程序运行时间大大减少。

【总结成果】
通过本次课程设计小组成员学习到了很多有关Matlab.图像处理的简单实用的方法,对基本的图像处理函数有更加直观的了解。

【程序注释】
Thresh = graythresh(Round); %自动确定灰度阀值
R=im2bw(Round,Thresh); %图像二值化
R0=imcomplement®; %图像反相
figure(1);imshow(R0);title(‘原始图像’); %图像显示

[M,N]=size(R0);g=zeros(M,N); %图像移动
a=240;b=0;
for i=1:M
for j=1:N
if((i-a>0)&(i-a<M)&(j-b>0)&(j-b<N))
g(i,j)=R0(i-a,j-b);
else
g(i,j)=0;
end
end
end

figure(2);imshow(logical(g));title(‘平移后的图像’); %图像显示

R1=im2bw(g,Thresh); %图像再次二值化
R5=zeros(M,N); %图像旋转叠加

for k=1:60
j=k*6;
R4=imrotate(R1,j,‘bicubic’,‘crop’);
R5=or(R4,R5);
end

figure(4);imshow(R5);title(‘旋转叠加(三次内插)’); %显示图像

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1380734.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

曼陀罗彩绘疗愈系统--艺术疗愈

曼陀罗是一种经典的艺术疗愈工具&#xff0c;著名心理学家荣格认为曼陀罗创作能使人更好地了解自我、回归自性&#xff0c;并自发地有一种心理治疗的作用。 本系统取曼陀罗积聚福德、智慧圆满的艺术疗法&#xff0c;云配置免安装&#xff0c;在移动端、PC 端全网络彩绘及创意分…

曼陀罗花对女性有什么作用?

如果您不是看完武侠片来提问的&#xff0c; 那我就给您介绍一下曼陀罗花是什么样子的&#xff0c; 曼陀罗在我们身边其实也是很常见的。公园里 或者谁家院子里&#xff0c;开花的时候跟个黄瓜挂在那树上差不多。 武侠片里说曼陀罗是剧毒&#xff0c;听起来也是如梦如幻的名字&…

Python+Selenium+Unittest 之selenium11--WebDriver操作方法1-常用操作

目录 1、send_keys("输入的内容") &#xff08;输入文字&#xff09; 2、clear() (清除元素内的内容) 3、click()&#xff08;点击元素&#xff09; 4、quit()关闭浏览器 5、refresh()&#xff08;刷新浏览器页面&#xff09; 6、set_window_size()和用 maxim…

美丽的曼陀罗曲线

最近看到一篇微信朋友圈上的文章&#xff0c;说两个行星运行轨迹的中心连线可以画出一个美丽的曼陀罗曲线&#xff0c;于是就写了一段代码生成这样的曲线&#xff0c;结果真是令人惊叹的美丽。 代码参见 &#xff1a; http://runjs.cn/detail/lbgqwfiu 或者 http://codepen…

波动速读入门训练(含黄卡、曼陀螺使用方法)

http://www.cnnlp.com/viewthread.php?tid5337&extrapage%3D1 波动速读入门训练&#xff08;含黄卡、曼陀螺使用方法&#xff09; 入门训练是进行波动速读的基础 在波动速读之前要进行入门训练,入门训练包括这样几项: 1.视觉训练 2.ESP(超感觉能力)训练 3.右脑记忆训…

思维导图 基础篇(06)思维方法-曼陀罗思考法

系列文章解读&说明&#xff1a; 本系列文章主要内容是 思维导图 基础课&#xff0c;旨在帮助更多 热爱学习的伙伴 更具体的了解思维导图&#xff0c;同时也会让 更多的伙伴从 思维导图 认知 误区中走出。 系列文章总纲链接为&#xff1a;专题总纲目录&#xff08;01&…

曼陀罗思考法

一 曼陀罗思考法的意义 曼陀罗艺术原本起源于佛教&#xff0c;被今泉浩晃先生加以系统化利用之后&#xff0c;却成为绝佳的计划工具。曼陀罗生活笔记最终目的是将「知识」转变为实践的「智慧」。按照此方法制作备忘录&#xff0c;应付学业与工作上各项疑惑&#xff0c;灵感将不…

曼陀罗绘画沙龙第二期|用100个曼陀罗,探索最真实的自我

感觉生活很平淡 找不到幸福感&#xff1f; 内心有伤痛 却不懂得自我疗愈&#xff1f; 不需任何绘画功底 一张曼陀罗就可以让你 随时随地随性进行情绪表达 唤醒沉睡的智慧 疗愈自我心灵 促进自我功能平衡 有些话儿无法言说 不如来一场治愈心灵的曼陀罗 给自己的心情放个假吧~ 什…

训练创新思维的方法:曼陀罗思考法

回顾10多年来走过的软件之路除了在经验上有一点积累、掌握了不少的技术之外似乎仍然一无所有&#xff0c;我并不是在传播负能量&#xff0c;这种一无所有指的并不是物质或是生活上的&#xff0c;而是在事业道路上。软件发展在于创新而这么多年来的工作却一直只是在跟随&#xf…

Spark(38):Streaming DataFrame 和 Streaming DataSet 转换

目录 0. 相关文章链接 1. 基本操作 1.1. 弱类型 api 1.2. 强类型 1.3. 直接执行 sql 2. 基于 event-time 的窗口操作 2.1. event-time 窗口理解 2.2. event-time 窗口生成规则 3. 基于 Watermark 处理延迟数据 3.1. 什么是 Watermark 机制 3.2. update 模式下使用 w…

Docker安装 Kibana

目录 前言安装Kibana步骤1&#xff1a;准备1. 安装docker2. 搜索可以使用的镜像。3. 也可从docker hub上搜索镜像。4. 选择合适的redis镜像。 步骤2&#xff1a;拉取 kibana 镜像拉取镜像查看已拉取的镜像 步骤3&#xff1a;创建容器创建容器方式1&#xff1a;快速创建容器 步骤…

怎么学习AJAX相关技术? - 易智编译EaseEditing

学习AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;相关技术可以让你实现网页的异步数据交互&#xff0c;提升用户体验。以下是一些学习AJAX技术的步骤和资源&#xff1a; HTML、CSS和JavaScript基础&#xff1a; 首先&#xff0c;确保你已经掌握了基本的HTML…

网络营销新人应该掌握的6大通关方法

当然大多数网络营销新人的基础目的还是想实现网赚的第一步&#xff0c;那么我们以网赚为基础的前提下&#xff0c;新人应该掌握以下6大通关方法&#xff1a; 一、微博营销 以新浪微博为例&#xff0c;营销大号已然成为微博江湖里盈利模式较清晰的一种模式。这是目前营销模式…

破解密码--csa

#passwd [USERNAME] 修改或者设置用户的密码 #passwd -d [USERNAME] 删除用户密码 注&#xff1a; 管理执行passwd&#xff1a; 可以指定用户名&#xff1b;不要输入之前的密码&#xff1b;可以更改和删除所有用户的密码&#xff1b;密码等级没有严格要求 普通用户执行p…

程序员的代码行数越少越好?

点击上方“码农突围”&#xff0c;马上关注&#xff0c;每天上午8:50准时推送 这里是码农充电第一站&#xff0c;回复“666”&#xff0c;获取一份专属大礼包 真爱&#xff0c;请设置“星标”或点个“在看” 作者 | Ryland Goldstein 出自 | CSDN 代码行数越少越好&#xff1f;…

PE启动盘和U启动盘(第三十六课)

PE启动盘和U启动盘(第三十六课) 一 WindowsPE工具盘 1. 制作WinPE镜像光盘 双击WePE64_V2.2-是-点击右下角光盘图标-选择ISO的输出位置-立即生成ISO 2. 通过光盘启动WinPE

细胞分裂2java版第4关怎么过_奇迹暖暖第二卷第二章第4关怎么过_ 奇迹暖暖II-2-4通关攻略_游戏吧...

奇迹暖暖游戏中有很多玩家都想知道第二卷第二章第4关怎么过&#xff0c;下面游戏吧小编为大家奇迹暖暖II-2-4通关攻略&#xff0c;感谢大家的阅读&#xff0c;更多精彩内容请关注游戏吧&#xff01; 属性&#xff1a;华丽、可爱、活泼、清纯、清凉&#xff1b; 技能推荐&#x…

面试问题大通关

面试问题大通关大灰狼 问题一&#xff1a;“请你自我介绍一下” 常规思路&#xff1a; ①介绍内容要与个人简历相一致&#xff1b; ②表述方式上尽量口语化&#xff1b;③要切中要害&#xff0c;不谈无关、无用的内容&#xff1b;④条理要清晰&#xff0c;层次要分明&a…

FC金手指代码大全·持续更新-亲测可用-FC 经典游戏完整可用的金手指大全---持续更新,偶尔玩玩经典回味无穷,小时候不能通关的现在通通通关一遍

FC 经典游戏完整可用的金手指大全—持续更新&#xff0c;偶尔玩玩经典回味无穷&#xff0c;小时候不能通关的现在通通通关一遍 2021年5月11日更新&#xff1a; 每次翻金手指一些垃圾小网站标题党吸引进去吓一大堆木马什么也没有&#xff0c;什么xx无敌版&#xff0c;浪费了宝…

codecombat极客战记森林61-70通关代码

codecombat极客战记森林61-70通关代码 python代码 61.罪与罚 # 看起来食人魔酋长正在偷你的宝石啊&#xff01; # 指挥两门火炮攻击敌人达成目标。while True:item hero.findNearestItem()if item:itempos item.pos.x " " item.pos.yhero.say("item at :&…