機械学習基礎理論独習

誤りがあればご指摘いただけると幸いです。数式が整うまで少し時間かかります。リンクフリーです。

勉強ログです。リンクフリーです
目次へ戻る

2026-01-01から1年間の記事一覧

【3次元点群】梅山の方法【和訳】

はじめに 「梅山の方法」とは 2 つの点群をピッタリ重ね合わせるための、最適な回転・平行移動・スケールを求める計算手法の事です。 Least-Squares Estimation of Transformation Parameters Between Two Point Patterns という論文を訳していきます。 元論…

【3次元点群】法線方向の推定【Open3D】

はじめに 3次元点群(以下、点群)から各点の法線ベクトルを推定する記事を書きます。 法線ベクトルを方向を無視して求める 法線ベクトルの向きを無視して推定するには、近傍点の PCA の第 3 主成分を用います。 ※ここで説明を終えている記事が多いので注意し…

【Open3D】平面と球をRANSACで検出する【Python】

はじめに タイトルに Open3D とは書きましたが、球の検出は自前でやります。 平面の検出のRANSACのアルゴリズム 1. 点群からランダムに3点を選び、その 3 点を通る平面を算出する。 2. 点群とその平面の距離が閾値以下である場合、inlierとしてカウントする…

【3次元点群】ICPアルゴリズム Point to Plane

ICPアルゴリズム ICPアルゴリズム(Iterative Closest Point)は、「2つの点群を、最も重なりが良い位置へ『反復的』に引き寄せる手法」です。 ICP アルゴリズムには点に法線が定義されていない時に使われる「Point to Point」と点に法線が定義されている時…

【3次元点群】ICPアルゴリズム Point to Point

ICPアルゴリズム ICPアルゴリズム(Iterative Closest Point)は、「2つの点群を、最も重なりが良い位置へ『反復的』に引き寄せる手法」です。 ICP アルゴリズムには点に法線が定義されていない時に使われる「Point to Point」と点に法線が定義されている時…

【Open3D】点群の表示方法【Python】

draw_geometriesを使う方法 点群をロードして間引いて表示する例 import open3d as o3d import numpy as np import numpy.linalg as LA import copy # ロード pcd_s_orig = o3d.io.read_point_cloud( "./3dpcp_book_codes/data/bun000.pcd" ) pcd_t_orig = o…

【OpenCL】行列の積のカーネルの最適化

はじめに Cra2yPierr0tさんが書いている記事軽率にGPUを使っていこう、OpenCL入門の最後に 「データの再利用を最適化するためにはブロック化の技術が必要になる。行列をプライベートメモリにちょうど収まるようにタイルに分解したり、タイルをローカルメモリ…

【VS2022】OpenCL のメモ【実験】

if文で遅くなる? GPU のコードは if 文を避けるべき、ということはなんとなく知っていたので実験した。 __kernel void test_if(__global float* out, int mode) { int id = get_global_id(0); float x = (float)id; if (mode == 0) { // 発散なし(全員同じ…

【VS2022】OpenCL の導入方法

OpenCLとは OpenCL は、CPU・GPU など異なる計算デバイスを共通の仕組みで扱うための並列計算 API。 カーネルと呼ばれる関数をデバイス上で実行し、大量データを高速に処理できる。 実務では主に GPU 計算に使われることが多い。 インストール 以下のコマン…

【MFC/OpenGL】imgui の設定方法

imguiとは まず読み方ですが、「イムギューアイ」 と読む人が多いです。 DirectX12 や OpenGL などのグラフィックスライブラリを使って GUI を描画するライブラリです。 GUI の制御をコードのみでできるので使いやすいのが特徴で、特にデバッグ時に重宝する…

3次ベジェ曲線でイージング

要件 3次ベジェ曲線を としたとき、 を満たす を求め、 に対応する の値 を求めたい。 制御点を とし、制約は とします。 これにより、 が定まれば が定まり「イージング」が実現できます。 注意 3次ベジェ曲線のイージングとして以下のような画面があったと…

【MFC】CScrollHelper

はじめに CScrollViewを使えない場合にお使いください。 手っ取り早く以下のようにできます。 CScrollHelperの定義 ScrollHelper.h #pragma once class CScrollHelper { public: CScrollHelper(); virtual ~CScrollHelper(); void AttachWnd(CWnd* pWnd); vo…

【OpenGL】CC Character Base を PBR, SSS で描画【C++】

はじめに CC Character Base の右手を PBR, SSS で描画してみようと思います。 以下のような感じになります。 なお、CC Character Base は既に Blender か何かで glTF2.0 出力されているものとします。 glTF2.0 出力については【Blender】CC Character Base …

Krita のメモ

Wavelet Decompose Image > Wavelet Decompose にある。 Rotation のリセット テンキーでない 5 キーでリセットされる。 またメニューから View > Zoom, Rotate and Mirror > Reset Canvas Rotation でも可能。 Rotate, Translate and Scale Rotate: Shift +…

【OpenGL】PBRにおける Tone Map の種類

PBR におけるToneMapとは 「HDR → LDR の写像」のことです。 画像 Type Image PBR Neutral ACES linear Reinhard KhronosPBRNeutralToneMapはPBRNeutralToneMapと酷似していたので画像は省略しています。 コード glslのコードを貼っておきます。 #ifndef TON…

GPUのベンチマーク

はじめに 私は非力なPCで3DCGのソフト開発をしています。 低スペックだとは思いますが、どの程度か知りたくなりベンチマークを行いました。 低スペックの方が遅くなったことに気づきやすいので開発には向いていると思っています。 スペック DQ10ベンチマーク…

【OpenGL】LearnOpenGLをローカルで閲覧する方法

はじめに 最近よく LearnOpenGL を閲覧するんですが閲覧回数の上限に引っかかって見れない時がありました。 これは嫌だなってことで、ローカルで閲覧できる手順を残しておきます。 ローカルに落としてローカルサーバーを起動して閲覧したら、 MathJax でエラ…

【Blender】CC Character Base から右腕のモデルを glTF2.0 で出力する手順

やりたいこと 自作のアプリに CC Character Base のモデルを基に右腕の glTF を出力したいとします。 Blender のバージョンは 4.5.2 です。 手順(Model の読み込みと Bone の設定) 1. こちらを参考にして "C:\CC Character Base\CC Character Base\FBX\03_Ne…

【3DCG】Rig の基本と glTF2.0

はじめに プログラムによる実装と glTF2.0 を意識して Rig について説明します。 なので本記事はプログラマー向けです。 ですが、プログラムは書かないので非プログラマーも読める内容なはずです。 またこの辺の内容の用語が統一されていないように思います(…

目次へ戻る