Matlab 关于彩色图像的平移、旋转以及对称处理
一、实验源码
(1)图像平移
image = imread('picture1.jpg'); % 读取图像
[W, H, G] = size(image); % 获取图像大小
image_r=image(:,:,1);
image_g=image(:,:,2);
image_b=image(:,:,3);%获取图像的RGB值
res = zeros(W, H, 3); % 构造结果矩阵。每个像素点默认初始化为0(黑色)
X = 50; % 平移量X
Y = 50; % 平移量Y
tras = [1 0 X; 0 1 Y; 0 0 1]; % 平移的变换矩阵
for i = 1 : W
for j = 1 : H
temp = [i; j; 1];
temp = tras * temp; % 矩阵乘法
x = temp(1, 1);
y = temp(2, 1);%x、y分别为通过矩阵乘法得到后的平移位置的横纵坐标值
% 变换后的位置判断是否越界
if (x <= W) && (y <= H)&&(x >= 1) && (y >= 1)
res(x,y,1) = image_r(i, j);
res(x,y,2) = image_g(i, j);
res(x,y,3) = image_b(i, j);%将新的RGB值赋予在背景上
end
end
end
imshow(uint8(res)); % 显示图像,要用uint8转化,以下都是。
(2)图像偏转
image = imread('picture1.jpg'); % 读取图像
[W, H, G] = size(image); % 获取图像大小
image_r=image(:,:,1);
image_g=image(:,:,2);
image_b=image(:,:,3);%获取图像的RGB值
X = 30; % 偏移角度,角度可以自己换
Y = pi/180*X; %偏转弧度,由于matlab里面的三角函数的参数是弧度,需进行角度转弧度处理
tras = [cos(Y) -sin(Y) 0; sin(Y) cos(Y) 0; 0 0 1]; % 平移的变换矩阵
res = zeros(W, H, 3); % 构造结果矩阵。每个像素点默认初始化为0(黑色)
for i = 1 : W
for j = 1 : H
temp = [i; j; 1];
temp = tras * temp; % 矩阵乘法
x = round(uint16(temp(1, 1)));
y = round(uint16(temp(2, 1)));%x、y分别为通过矩阵乘法得到后的平移位置的横纵坐标值
% 变换后的位置判断是否越界
if (x <= W) && (y <= H)&&(x >= 1) && (y >= 1)
res(x,y,1) = image_r(i, j);
res(x,y,2) = image_g(i, j);
res(x,y,3) = image_b(i, j);%将新的RGB值赋予在背景上
end
end
end
%插值处理,由于算法问题(小数取整),旋转后并不是每一个像素点都有值,因此需要在没有值的像素点再填充像素点
for a =2 : (W - 1)
for b=2 :( H - 1)
for c=1 : 3
if res(a,b,c)==0&&res(a,b-1,c)~=0&&res(a,b+1,c)~=0
res(a,b,c)=res(a,b-1,c);
end
end
end
end
imshow(uint8(res)); % 显示图像
(3)图像对称(左右、上下)
%左右对称
image = imread('picture1.jpg'); % 读取图像
[W, H, G] = size(image); % 获取图像大小
image_r=image(:,:,1);
image_g=image(:,:,2);
image_b=image(:,:,3);%获取图像的RGB值
res = zeros(W, H, 3); % 构造结果矩阵。每个像素点默认初始化为0(黑色)
for i = 1 : W
for j = 1 : H
x = i;
y = H-j+1;%左右对称
res(x,y,1) = image_r(i, j);
res(x,y,2) = image_g(i, j);
res(x,y,3) = image_b(i, j);%将新的RGB值赋予在背景上
end
end
imshow(uint8(res)); % 显示图像
%上下对称
image = imread('picture1.jpg'); % 读取图像
[W, H, G] = size(image); % 获取图像大小
image_r=image(:,:,1);
image_g=image(:,:,2);
image_b=image(:,:,3);%获取图像的RGB值
res = zeros(W, H, 3); % 构造结果矩阵。每个像素点默认初始化为0(黑色)
for i = 1 : W
for j = 1 : H
x = W-i+1;
y = j;%上下对称
res(x,y,1) = image_r(i, j);
res(x,y,2) = image_g(i, j);
res(x,y,3) = image_b(i, j);%将新的RGB值赋予在背景上
end
end
imshow(uint8(res)); % 显示图像
二、实验结果
(1)平移展示
(2)旋转展示
(3)对称展示
至此,彩色图像的基本处理到这啦,关于旋转插值处理那里我的处理还是不怎么好,希望如果小伙伴有更好的方式就和我讨论下,我改进一下。
文章浏览阅读3.7k次。总述:需要的安装的插件:(通过终端安装) :fastlane,Xcode 命令行工具,pgyer;步骤:1:安装fastlane1)首先要安装正确的 Ruby 版本,在终端窗口中用下列命令来确认:ruby-v终端反应:macdeMacBook-Air:Desktop mac$ ruby -vruby 2.3.3p222 (2016-11-21 revision 56..._fastlane 上传蒲公英 get token is failed
文章浏览阅读2.1k次,点赞2次,收藏9次。ML算法模型简单总结一下在学习的过程中对Machine Learning算法模型理解:决策树 ( decision tree)详解集成算法(Bagging,随机森林)集成算法(AdaBoost基本原理)Boosting算法(GBDT,XGBoost,LightGBM)SVM(Support Vector Machin) 支持向量机 详解KNN(k-nearest neighbors..._哪些不是机器学习方法的算法
文章浏览阅读529次。本文是为大家整理的发展与教育心理学主题相关的10篇毕业论文文献,包括5篇期刊论文和5篇专利论文,为发展与教育心理学选题相关人员撰写毕业论文提供参考。1.[期刊论文]浅析高校心理学教育教学的多元化发展期刊:《文化创新比较研究》 | 2021 年第 004 期摘要:心理学课程是各高校中必不可少的一门课程,立足于学生的心理特征,进行正面教育,帮助学生健全人格.心理学教育重在促使学生健康心理的养成,缓解..._发展心理学文献
文章浏览阅读2.6w次,点赞29次,收藏133次。maven配置https阿里云仓库配置_httpmaven aliyun
文章浏览阅读8.2k次,点赞3次,收藏25次。1 最大线电压峰值: (直流测电压为Vdc)SPWM调制时最大的三相线电压为Vm=1.732Vdc/2SVPWM调制时最大的三相线电压为Vm=Vdc故SVPWM调制时的电压利用率比SPWM大15.5%2 SVPWM调制比M与长度系数M*的关系分_svpwm与spwm的区别
文章浏览阅读9.2k次,点赞5次,收藏60次。Qt提供了一个QComboBox下拉框组件,但是对于一些自定义样式的需求实现起来并不方便,很多东西还得去倒腾源码,还不如直接用基础的组件自己来实现一个下拉框。不过,自己组合的组件要做的细节太多了,所以我只在一些定制化程度高的需求才使用这种方式。_qt下滑组件
文章浏览阅读1.3k次。wi-fiQuite a few people have gotten into “interesting” debates and discussions about the true meaning of the term “Wi-Fi”, but what does the “Fi” portion of the term itself actually stand for? Today’s..._wifi中的fi是什么意思
文章浏览阅读346次。代码:#include #include#include#includeusing namespace std; int main() { int a; int b; int c; int d; start:/*为go to 语句做标记*/ cout<<"请输入4个整型数据,范围在1-13之间即可"<<<_24点游戏面向对象实践
文章浏览阅读697次。demo代码地址链接:https://pan.baidu.com/s/1yY_84ANvwh78gE6G0HXnBg提取码:gzvuorg.redissonredisson3.9.11.创建redis连接 连接池import org.redisson.Redisson;import org.redisson.api.RedissonClient;import org.redisson.config..._redis blockingdeque队列
文章浏览阅读1.8k次。一、基本介绍jSignature是一个jQuery插件,它简化了创建签名捕获场的浏览器窗口,允许用户使用鼠标,笔,或手指画一个签名。jSignature捕捉签名矢量轮廓的笔触。虽然jSignature可以导出大位图(PNG)也一样,提取签名的高度可扩展的行程运动坐标(又名向量图)允许签名呈现更大的灵活性。支持主要的台式机,平板电脑和手机浏览器的支持。HTML5 Canvas元素默认情况..._jsignature api
文章浏览阅读3.6k次。更改Pycharm的设置 打开settings(CTRL + ALT + S)查找框输入 interpreter 双击 project Interpreter在 Project Interpreter选择编译器,点击apply,重新启动pycharm即可_pycharm apply please
文章浏览阅读7.6k次,点赞16次,收藏85次。最近在搞一些关于机器学习的小东西,其中有一部分就是关于决策树的。过程中遇到了一些小问题,现记录并与大家分享。一、问题描述:使用西瓜数据集构建决策树,并将构建的决策树进行可视化操作。二、问题简析:首先我们简单的介绍一下什么是决策树。决策树是广泛用于分类和回归任务的模型。本质上,它从一层层的if/else问题中进行学习,并得出结论。然后不妨看看下面这个小思考题吧:(故事我瞎编的,看问题就好了嘛)小鹿机缘巧合之下喜欢上了一个只有一面之缘的贝贝(一见钟情嘛)。对吧,爱情的力量是伟大的,小鹿就不顾一切的裸辞叻,_用信息增益方法画出西瓜数据集的决策树