我的创作纪念日 - CSDN创作者4周年,感谢平台,未来可期!

news2024/12/30 1:31:23

CSDN创作者4周年,感谢平台,未来可期!

  • 不知不觉已经加入这个平台4周年了,恍惚昨日之景,有些事情,你不在意,平台却已经写好了程序来给它画上了标记,思想无线,故程序也无边界
  • 坦白讲,虽说四周年,但感觉自己真正 在这个平台创作内容是从2021年下半年起,为什呢这么说呢,是因为从那时真正有了对算法和程序的思考能力。
  • https://blog.csdn.net/yohnyang?spm=1010.2135.3001.5343
    在这里插入图片描述

机缘

  1. 通过blog进行基础知识的积累和巩固
  2. 实战项目中的经验分享
  3. 日常学习过程中的记录
  4. 通过文章进行技术交流
  5. 知识付费,技术变现
  6. 尝试通过这个平台可以拓展更多的人脉,接触新的关于视觉算法相关的项目,不断突破和挑战

收获

  1. 涨粉
    在这里插入图片描述

  2. 总体等级提升
    在这里插入图片描述

  3. 资源下载
    在这里插入图片描述

  4. 变现
    在这里插入图片描述


日常

  1. 创作是否已经是生活的一部分了,每天早上会打开手机CSDN查看一下数据变化,工作日都会通过CSDN查询相关的技术盲区,阶段性的自我计数审查,如果有了新的心得和总结总是会迫不及待的将它变为blog,已经视为必须的一部分。
  2. 有限的精力下,如何平衡创作和工作学习:时间弥足珍贵,二十多岁,生活压力普遍较大,贯穿着技术薄弱、工作经验少、人脉稀疏,加班时间较长,可能留给创作和学习的时间很少,但是慢慢工作时间长了会发现,做一个项目或者开发一个功能的时候,如果信手拈来,那增加的就是惊讶积累,如果颇具挑战,那每天都将收获一些新的知识和体会,相当于每天都在学习,我觉得创作可以从闲暇之余挤出一些时间书写博客,一次写或者分几次完成也都可以0

成就

  • 工作两年多,自己也动手做过一些小项目,这些在我的
    人工智能专栏就可以看到,主要介绍的是一些视觉算法应用(传统+deeplearning)
  • 有一个成就时最值得骄傲的,2022年研究了一个C++的机器人库并记录在了机器人控制算法专栏,这个在全网是独一份而且最详细的,个人感觉他要比ROS要好用一些。
  • 总结的深度学习实战例程目前篇数少却订阅量很好,这个很自豪,以后也会再接再厉,续上更多的项目案例呈现给我的粉丝及订阅者们,感谢一路陪伴。
  • 放一个感觉自己刚站起来的代码,在我的立体视觉与三维重建专栏可以看到详细介绍:https://blog.csdn.net/yohnyang/article/details/124490587
clear all;
close all;
clc;

%生成原始点集
X=[];Y=[];Z=[];
for i=-180:2:180
    for j=-90:2:90
        x = i * pi / 180.0;
        y = j * pi / 180.0;   
        X =[X,cos(y) * cos(x)];
        Y =[Y,sin(y) * cos(x)];
        Z =[Z,sin(x)]; 
    end
end
P=[X(1:3000)' Y(1:3000)' Z(1:3000)'];

%生成变换后点集
i=0.5;j=0.3;k=0.7;
Rx=[1 0 0;0 cos(i) -sin(i); 0 sin(i) cos(i)];
Ry=[cos(j) 0 sin(j);0 1 0;-sin(j) 0 cos(j)];
Rz=[cos(k) -sin(k) 0;sin(k) cos(k) 0;0 0 1];
R=Rx*Ry*Rz;
X=P*R + [0.2,0.3,0.4];

plot3(P(:,1),P(:,2),P(:,3),'b.');
hold on;
plot3(X(:,1),X(:,2),X(:,3),'r.');

%计算点集均值
up = mean(P);
ux = mean(X);

% %case1:矩阵右乘 
% P1=P-up;
% X1=X-ux;
% 
% % 计算点集协方差
% sigma=P1'*X1/(length(X1))
% 
% [u s v] = svd(sigma);
% RR=u*v';
% 
% % 计算平移向量
% qr=ux-up*RR;
% 
% %验证旋转矩阵与平移向量正确性
% Pre = P*RR+qr;

%case2:矩阵左乘
PP=P';
XX=X';

PP1=PP-up';
XX1=XX-ux';

%sigma
sigma=XX1*PP1'/length(XX1);

[u s v]=svd(sigma);

RR=u*v';
qr=ux'-RR*(up');

Pre = RR*PP+qr;
Pre=Pre';


figure;
plot3(P(:,1),P(:,2),P(:,3),'b.');
hold on;
plot3(X(:,1),X(:,2),X(:,3),'r.');
plot3(Pre(:,1),Pre(:,2),Pre(:,3),'go');

C++ - Eigen 实现:

void pose_estimation_3d3d(const vector<Point3f> &pts1,
                          const vector<Point3f> &pts2,
                          Mat &R, Mat &t) {
  Point3f p1, p2;     // center of mass
  int N = pts1.size();
  //求质心
  for (int i = 0; i < N; i++) {
    p1 += pts1[i];
    p2 += pts2[i];
  }
  p1 = Point3f(Vec3f(p1) / N);
  p2 = Point3f(Vec3f(p2) / N);
  
  //去质心
  vector<Point3f> q1(N), q2(N); // remove the center
  for (int i = 0; i < N; i++) {
    q1[i] = pts1[i] - p1;
    q2[i] = pts2[i] - p2;
  }

  // 计算W
  Eigen::Matrix3d W = Eigen::Matrix3d::Zero();
  for (int i = 0; i < N; i++) {
    W += Eigen::Vector3d(q1[i].x, q1[i].y, q1[i].z) * Eigen::Vector3d(q2[i].x, q2[i].y, q2[i].z).transpose();
  }
  cout << "W=" << W << endl;

  // SVD分解出U V
  Eigen::JacobiSVD<Eigen::Matrix3d> svd(W, Eigen::ComputeFullU | Eigen::ComputeFullV);
  Eigen::Matrix3d U = svd.matrixU();
  Eigen::Matrix3d V = svd.matrixV();

  cout << "U=" << U << endl;
  cout << "V=" << V << endl;
 //计算R T
  Eigen::Matrix3d R_ = U * (V.transpose());
  if (R_.determinant() < 0) {  //R存在多解情况,取正值
    R_ = -R_;
  }
  //求解t
  Eigen::Vector3d t_ = Eigen::Vector3d(p1.x, p1.y, p1.z) - R_ * Eigen::Vector3d(p2.x, p2.y, p2.z);

  // 变成矩阵形式
  R = (Mat_<double>(3, 3) <<
    R_(0, 0), R_(0, 1), R_(0, 2),
    R_(1, 0), R_(1, 1), R_(1, 2),
    R_(2, 0), R_(2, 1), R_(2, 2)
  );
  t = (Mat_<double>(3, 1) << t_(0, 0), t_(1, 0), t_(2, 0));
}

憧憬

  • 职业规划
    在此不说太远的事情,先说下三到五年的职业规划吧:当下工作第3年中,希望再过两到三年可以夯实C++实战能力,在多线程、算法及部署上运用自如,并可以在Qt中移植自己的算法,形成一套完整的体系操作,真正的成为技术精英,五年内的话希望可以不仅在技术上有发展,希望以后可以在产品设计、方案制定及团队协作上积累更多的经验,更好的发光发热哦

  • 创作规划

    • 一方面将现有的专栏补充完善,争取每个实战项目专栏数量在50+
    • 另一方面开拓其他专栏项目,比如nlp、机器人控制算法等
    • 也希望可以将我积累的经验和知识优化成课程放在CSDN平台上,若干年后保存一些很有意义的回忆吧​​

致谢

!!!---------- 感谢CSDN提供平台---------- !!!

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

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

相关文章

Vulnhub靶机系列 Hackadmeic.RTB1

系列&#xff1a;Hackademic&#xff08;此系列共2台&#xff09; 难度&#xff1a;初级 信息收集 主机发现 netdiscover -r 192.168.80.0/24端口扫描 nmap -A -p- 192.168.80.143访问80端口 使用指纹识别插件查看是WordPress 根据首页显示的内容&#xff0c;点击target 点击…

(已解决)PySpark : AttributeError: ‘DataFrame‘ object has no attribute ‘iteritems‘

AttributeError: ‘DataFrame’ object has no attribute ‘iteritems’ 原因在使用SparkSession对象中createDataFrame函数想要将pandas的dataframe转换成spark的dataframe时出现的 因为createDataFrame使用了新版本pandas弃用的iteritems()&#xff0c;所以报错 解决办法&…

webSocket 开发

1 认识webSocket WebSocket_ohana&#xff01;的博客-CSDN博客 一&#xff0c;什么是websocket WebSocket是HTML5下一种新的协议&#xff08;websocket协议本质上是一个基于tcp的协议&#xff09;它实现了浏览器与服务器全双工通信&#xff0c;能更好的节省服务器资源和带宽…

这些Linux基础命令你总得掌握吧

B站|公众号&#xff1a;啥都会一点的研究生 写在前面 很多深度学习/机器学习/数据分析等领域&#xff08;或者说大多数在Python环境下进行操作的领域&#xff09;的初学者入门时是在Windows上进行学习&#xff0c;也得益于如Anaconda等工具把环境管理做的如此友善 但如果想在…

阿里网盘海外使用速度很慢

小虎最近在HK使用阿里云盘&#xff0c;速度突然变得很慢&#xff0c;但是百度的没问题。查了发现是阿里的DNS做的不好&#xff0c;所以换了一个DNS速度就上来了。 解决方案 在这个网站&#xff1a;[原创工具] DNS优选(挑选最合适的DNS服务器,拒绝DNS劫下载DNS推荐工具&#x…

如何取消订阅IEEE membership的email

最近小虎开了一个IEEE Student Member&#xff0c;邮箱都快被IEEE给爆箱了。所以想办法取消订阅其邮件&#xff0c;但是保留其member身份。 方法 在profile界面选择communication preferences and policies, Uncheck所有communications&#xff0c;选择I only want to recei…

Flink内核源码解析--Flink中重要的工作组件和机制

Flink内核源码 1、掌握Flink应用程序抽象2、掌握Flink核心组件整体架构抽象3、掌握Flink Job三种运行模式4、理解Flink RPC网络通信框架Akka详解5、理解TaskManager为例子&#xff0c;分析Flink封装Akka Actor的方法和整个调用流程6、理解Flink高可用服务HighAvailabilityServ…

Spring Cloud Alibaba -微服务架构(二)

1. 微服务架构介绍 微服务架构&#xff0c; 简单的说就是将单体应用进一步拆分&#xff0c;拆分成更小的服务&#xff0c;每个服务都是一个可以独立运行的项目。 1.1 微服务架构的常见问题 一旦采用微服务系统架构&#xff0c;就势必会遇到这样几个问题&#xff1a; 这么多小…

最长回文子序列——力扣516

动态规划 int longestPalindromeSubseq(string s){int n=s.length();vector<vector<int>>

聊聊智慧城市的发展

目录 1.智慧城市应该是什么样子 2.智慧城市的实现方案 3.智慧城市会给人们造成的影响 1.智慧城市应该是什么样子 智慧城市是一种基于信息和通信技术的先进城市管理模式&#xff0c;旨在提高城市的运行效率、居民生活质量和可持续发展。智慧城市整合了各种智能设备、传感器、…

segment anything in high quality

致力于解决细节分割不好的情况&#xff0c;可以理解为sam的精细分割的微调版本&#xff0c;但是对原始的分割能力也没有丢失&#xff0c;有点像目标检测中的小目标检测优化算法。总的来说&#xff0c;在原始的sam上增加了hq-features和hq output token以及mlp&#xff0c;来做h…

【MySQL面试题(66道)】

文章目录 MySQL面试题(66道)基础1.什么是内连接、外连接、交叉连接、笛卡尔积呢&#xff1f;2.那 MySQL 的内连接、左连接、右连接有有什么区别&#xff1f;3.说一下数据库的三大范式&#xff1f;4.varchar 与 char 的区别&#xff1f;5.blob 和 text 有什么区别&#xff1f;6.…

【三次握手】TCP三次握手由入门到精通(完整版)

⬜⬜⬜ &#x1f430;&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea;(*^▽^*)欢迎光临 &#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea;&#x1f430;⬜⬜⬜ ✏️write in front✏️ &#x1f4dd;个人主页&#xff1a;陈丹宇jmu &am…

EndNote(三)【阅读+批注、插入文献】

将文献导入EndNote了&#xff0c;右侧就能看当前文献的内容了,比如preview、pdf查看等&#xff1a; 当然&#xff0c;如果你觉得这样看有点不大气哈哈&#xff0c;你可以双击&#xff1a;&#xff08;这是第一种方法&#xff09; 他就会弹出一个窗口&#xff1a; &#xff08;这…

要跟静音开关说再见了!iPhone15新变革,Action按钮引领方向

有很多传言称iPhone 15 Pro会有很多变化&#xff0c;但其中一个变化可能意味着iPhone体验从第一天起就有的一项功能的终结。我说的是静音开关&#xff0c;它可以让你轻松地打开或关闭iPhone的铃声。 根据越来越多的传言&#xff0c;iPhone 15 Pro和iPhone 15 Pro Max将拆除静音…

C++------利用C++实现二叉搜索树【数据结构】

文章目录 二叉搜索树概念二叉搜索树的操作查找插入删除 二叉搜索树的应用 二叉搜索树 概念 什么是二叉搜索树&#xff0c;二叉搜索树就是指左孩子永远比根小右孩子永远比根大。这个规则适用于所有的子树。 上面的就是一棵二叉搜索树&#xff0c;我们还可以发现这棵树走一个中…

C语言之整数_数据存储篇(1)

目录 数据类型 整形家族 浮点型家族 构造类型 指针类型 空类型 整形在内存中的存储&#xff08;原反补&#xff09; NO1. NO2. NO3. NO4. NO5. NO6. 大端小端字节序 NO.1 NO.2 NO.3 NO.4 练习题 NO1. NO2. NO3. NO4. NO5. NO6. 总结 数据类型 …

Unity 之 变量修饰符public 与private 以及默认

文章目录 publicprivate默认情况的成员变量 public 当在Unity中使用public修饰符时&#xff0c;它将变量声明为公共变量&#xff0c;这意味着该变量可以在Unity编辑器中进行设置&#xff0c;并且可以从其他脚本中访问和修改。公共变量在Unity中广泛用于在脚本之间共享数据&…

4.Linux下Cmake交叉编译Qt项目到Jetson Orin Nano(arm)

由于3&#xff1a;Ubuntu上配置QT交叉编译环境并编译QT程序到Jetson Orin Nano&#xff08;ARM&#xff09;_月上林梢的博客-CSDN博客 这一篇文章只用手动配置&#xff0c;一直在点、点、点。比较 LOW&#xff0c;现在在Ubuntu上使用Cmake实现交叉编译QT程序到Jetson Orin Nano…

电脑技巧:电脑关机、休眠、睡眠之间如何选择,看完你就懂了

目录 一、关机、休眠、睡眠的区别&#xff1f; 1.关机 2.休眠 休眠的优点 休眠的缺点 3.睡眠 睡眠的优点 睡眠的缺点 二、什么时候关机/休眠/睡眠&#xff1f; 什么时候需要关机&#xff1f; 什么情况下使用休眠模式&#xff1f; 什么情况下使用睡眠模式&…