Matlab 关于彩色图像的平移、旋转以及对称处理_matlab中怎么把图对称-程序员宅基地

技术标签: matlab  matlab算法  

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)对称展示
对称展示

 至此,彩色图像的基本处理到这啦,关于旋转插值处理那里我的处理还是不怎么好,希望如果小伙伴有更好的方式就和我讨论下,我改进一下。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Atimynyc/article/details/78657784

智能推荐

Fastlane 实现xcode 打ipa包并上传到蒲公英_fastlane 上传蒲公英 get token is failed-程序员宅基地

文章浏览阅读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 期摘要:心理学课程是各高校中必不可少的一门课程,立足于学生的心理特征,进行正面教育,帮助学生健全人格.心理学教育重在促使学生健康心理的养成,缓解..._发展心理学文献

2022年 maven配置阿里云仓库配置_httpmaven aliyun-程序员宅基地

文章浏览阅读2.6w次,点赞29次,收藏133次。maven配置https阿里云仓库配置_httpmaven aliyun

SPWM与SVPWM的比较_svpwm与spwm的区别-程序员宅基地

文章浏览阅读8.2k次,点赞3次,收藏25次。1 最大线电压峰值: (直流测电压为Vdc)SPWM调制时最大的三相线电压为Vm=1.732Vdc/2SVPWM调制时最大的三相线电压为Vm=Vdc故SVPWM调制时的电压利用率比SPWM大15.5%2 SVPWM调制比M与长度系数M*的关系分_svpwm与spwm的区别

Qt自定义一个下拉框(使用基础组件组合)_qt下滑组件-程序员宅基地

文章浏览阅读9.2k次,点赞5次,收藏60次。Qt提供了一个QComboBox下拉框组件,但是对于一些自定义样式的需求实现起来并不方便,很多东西还得去倒腾源码,还不如直接用基础的组件自己来实现一个下拉框。不过,自己组合的组件要做的细节太多了,所以我只在一些定制化程度高的需求才使用这种方式。_qt下滑组件

随便推点

wi-fi_Wi-Fi中的“ Fi”是什么意思?-程序员宅基地

文章浏览阅读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是什么意思

24点游戏_24点游戏面向对象实践-程序员宅基地

文章浏览阅读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点游戏面向对象实践

redis延迟队列 如何确保成功消费_redis延迟队列,处理正常订单超时自动关闭-程序员宅基地

文章浏览阅读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队列

jSignature 移动端在线签名_jsignature api-程序员宅基地

文章浏览阅读1.8k次。一、基本介绍jSignature是一个jQuery插件,它简化了创建签名捕获场的浏览器窗口,允许用户使用鼠标,笔,或手指画一个签名。jSignature捕捉签名矢量轮廓的笔触。虽然jSignature可以导出大位图(PNG)也一样,提取签名的高度可扩展的行程运动坐标(又名向量图)允许签名呈现更大的灵活性。支持主要的台式机,平板电脑和手机浏览器的支持。HTML5 Canvas元素默认情况..._jsignature api

Pycharm报错:please select a valid interpreter_pycharm apply please-程序员宅基地

文章浏览阅读3.6k次。更改Pycharm的设置 打开settings(CTRL + ALT + S)查找框输入 interpreter 双击 project Interpreter在 Project Interpreter选择编译器,点击apply,重新启动pycharm即可_pycharm apply please

Python机器学习之决策树(使用西瓜数据集构建决策树,并将其可视化,graphviz程序下载)_用信息增益方法画出西瓜数据集的决策树-程序员宅基地

文章浏览阅读7.6k次,点赞16次,收藏85次。最近在搞一些关于机器学习的小东西,其中有一部分就是关于决策树的。过程中遇到了一些小问题,现记录并与大家分享。一、问题描述:使用西瓜数据集构建决策树,并将构建的决策树进行可视化操作。二、问题简析:首先我们简单的介绍一下什么是决策树。决策树是广泛用于分类和回归任务的模型。本质上,它从一层层的if/else问题中进行学习,并得出结论。然后不妨看看下面这个小思考题吧:(故事我瞎编的,看问题就好了嘛)小鹿机缘巧合之下喜欢上了一个只有一面之缘的贝贝(一见钟情嘛)。对吧,爱情的力量是伟大的,小鹿就不顾一切的裸辞叻,_用信息增益方法画出西瓜数据集的决策树

推荐文章

热门文章

相关标签