読者です 読者をやめる 読者になる 読者になる

旅行好きなソフトエンジニアの備忘録

プログラミングや技術関連のメモを始めました

【C#】 ニュートン法を使って連立非線形方程式の解を求める

ニュートン法を使って連立非線形方程式の解を求めます。ニュートン法を使って連立非線形方程式の解を求める場合、ヤコビアンの計算が必要となり多くの計算量が必要となってしまいます。このため、ここではニュートン法の変種を使って連立非線形方程式の解を…

【C#】 ラグランジュの未定乗数法による制約条件付き最適化

という制約条件付きで、関数を最小化する、という問題をラグランジュの未定乗数法を使って解きます。ここでは例として、以下の制約条件下で目的関数を最小化するを探す、という問題を解きます。 目的関数 : 制約条件1: 制約条件2: 解き方は以下の手順に…

【OpenCV】 画像にエッジ検出フィルタを適用する(Cannyフィルタ)

OpenCVの復習が必要になったのでメモしておきます。アルゴリズム自体の説明はここ(しぼりたてブログ Canny Edge Detection -アルゴリズム-)が詳しかったです。 // グレースケールで画像を読み込む UMat source; imread("lenna.jpg", CV_LOAD_IMAGE_GRAYSCA…

【OpenCV】 画像にエッジ検出フィルタを適用する(Sobelフィルタ)

OpenCVの復習が必要になったのでメモしておきます。 // グレースケールで画像を読み込む UMat source; imread("lenna.jpg", CV_LOAD_IMAGE_GRAYSCALE).copyTo(source); if (source.empty()) { throw runtime_error("Failed to open image"); } // 縦方向のエ…

【OpenCV】 画像にエッジ検出フィルタを適用する(Laplacianフィルタ)

OpenCVの復習が必要になったのでメモしておきます。 // グレースケールで画像を読み込む UMat source; imread("lenna.jpg", CV_LOAD_IMAGE_GRAYSCALE).copyTo(source); if (source.empty()) { throw runtime_error("Failed to open image"); } // エッジを検…

【OpenCV】 画像の一部を切り取る

OpenCVの復習が必要になったのでメモしておきます。 // 画像を読み込む UMat source; imread("lenna.jpg", CV_LOAD_IMAGE_GRAYSCALE).copyTo(source); if (source.empty()) { throw runtime_error("Failed to open image"); } // 切り取る箇所を指定する int…

【OpenCV】 画像に平滑化フィルタを適用する(メディアンフィルタ)

OpenCVの復習が必要になったのでメモしておきます。 // グレースケールで画像を読み込む UMat source; imread("lenna.jpg", CV_LOAD_IMAGE_GRAYSCALE).copyTo(source); if (source.empty()) { throw runtime_error("Failed to open image"); } // 画像を平滑…

【OpenCV】 画像に平滑化フィルタを適用する(ガウシアンフィルタ)

OpenCVの復習が必要になったのでメモしておきます。 // グレースケールで画像を読み込む UMat source; imread("lenna.jpg", CV_LOAD_IMAGE_GRAYSCALE).copyTo(source); if (source.empty()) { throw runtime_error("Failed to open image"); } // 画像を平滑…

【OpenCV】 画像に平滑化フィルタを適用する(単純平滑化フィルタ)

OpenCVの復習が必要になったのでメモしておきます。 // グレースケールで画像を読み込む UMat source; imread("lenna.jpg", CV_LOAD_IMAGE_GRAYSCALE).copyTo(source); if (source.empty()) { throw runtime_error("Failed to open image"); } // 画像を平滑…

【OpenCV】 画像の色を反転させる

OpenCVの復習が必要になったのでメモしておきます。 // グレースケールで画像を読み込む UMat source; imread("lenna.jpg", CV_LOAD_IMAGE_GRAYSCALE).copyTo(source); if (source.empty()) { throw runtime_error("Failed to open image"); } // 大津の方法…

【OpenCV】 画像を二値化する

OpenCVの復習が必要になったのでメモしておきます。 // グレースケールで画像を読み込む UMat source; imread("lenna.jpg", CV_LOAD_IMAGE_GRAYSCALE).copyTo(source); if (source.empty()) { throw runtime_error("Failed to open image"); } // 大津の方法…

【OpenCV】 コントラストを改善する

OpenCVの復習が必要になったのでメモしておきます。 // グレースケールで画像を読み込む UMat source; imread("lenna.jpg", CV_LOAD_IMAGE_GRAYSCALE).copyTo(source); if (source.empty()) { throw runtime_error("Failed to open image"); } // ヒストグラ…

【OpenCV】 カラー画像をグレースケール画像に変換する

OpenCVの復習が必要になったのでメモしておきます。 // 画像の読み込み UMat source; imread("lenna.jpg").copyTo(source); if (source.empty()) { throw runtime_error("Failed to open image"); } // 画像をグレースケール画像に変換する UMat destination…

【OpenCV】 画像に文字を書き込む

OpenCVの復習が必要になったのでメモしておきます。 // 画像の読み込み UMat source; imread("lenna.jpg").copyTo(source); if (source.empty()) { throw runtime_error("Failed to open image"); } // 表示する文字の始点座標 int x = source.cols/8; int y…

【OpenCV】 画像に円を書き込む

OpenCVの復習が必要になったのでメモしておきます。 // 画像の読み込み UMat source; imread("lenna.jpg").copyTo(source); if (source.empty()) { throw runtime_error("Failed to open image"); } // 円の中心を定義する int x = source.cols/2; int y = s…

【OpenCV】 画像に四角形を書き込む

OpenCVの復習が必要になったのでメモしておきます。 // 画像の読み込み UMat source; imread("lenna.jpg").copyTo(source); if (source.empty()) { throw runtime_error("Failed to open image"); } // 四角形の始点と終点を定義する int x0 = source.cols/4…

【OpenCV】 画像に直線を書き込む

OpenCVの復習が必要になったのでメモしておきます。 // 画像の読み込み UMat source; imread("lenna.jpg").copyTo(source); if (source.empty()) { throw runtime_error("Failed to open image"); } // 直線の始点と終点を定義する int x0 = source.cols/4; …

【OpenCV】 画像を回転させる

OpenCVの復習が必要になったのでメモしておきます。 // 画像の読み込み UMat source; imread("lenna.jpg").copyTo(source); if (source.empty()) { throw runtime_error("Failed to open image"); } // 回転の中心 Point2f center = Point2f(static_cast<float>(sou</float>…

【OpenCV】 画像をリサイズする

OpenCVの復習が必要になったのでメモしておきます。 // 画像の読み込み UMat source; imread("lenna.jpg").copyTo(source); if (source.empty()) { throw runtime_error("Failed to open image"); } // 画像のリサイズを行う int width = 100; int height = …

【OpenCV】 画像を反転させる

OpenCVの復習が必要になったのでメモします。 // 画像の読み込み UMat source; imread("lenna.jpg").copyTo(source); if (source.empty()) { throw runtime_error("Failed to open image"); } // 画像を反転させる // 0 :上下反転 // 1 :左右反転 // -1:上下…

【OpenCV】 画像の読み書き

OpenCVの復習が必要になったのでメモしておきます。 // 画像の読み込み(flagを指定しない場合はIMREAD_COLORで読み込まれる) int flag = IMREAD_GRAYSCALE; Mat image = imread("lenna.jpg", flag); // 画像を読み込めたかどうかはemptyメソッドで分かる i…

【C#】 ペナルティ法による制約条件付き最適化

制約条件が付いた最適化問題をペナルティ法を使って解いてみます。ここでは例として 制約条件: を満たす上で 目的関数: の最小値を与えるを求めます。 まずは目的関数、制約条件、ペナルティ係数から新しい目的関数を作成するクラスを作成します。 public …

【C#】 共役勾配法による多変数関数の最適化

共役勾配法を利用して多変数関数の最適化を行うクラスを実装します。共役勾配法ではここ(【C#】 勾配ベクトルを計算するクラス - 旅行好きなソフトエンジニアの備忘録)で作成したGradientというクラスを利用します。 public class ConjugateGradientMethod…

【C#】 ニュートン法を使って非線形方程式の解を求める

ニュートン法を使ってを満たすを計算します。まずはニュートン法を実装しますが、ここ(【C#】 微分を計算するクラス - 旅行好きなソフトエンジニアの備忘録)で作成したDerivativeというクラスを利用します。 public class NewtonMethod1D { /// <summary> /// ニュ</summary>…

【C#】 最急降下法による多変数関数の最適化

最急降下法を利用して多変数関数の最適化を行うクラスを実装します。最急降下法ではここ(【C#】 勾配ベクトルを計算するクラス - 旅行好きなソフトエンジニアの備忘録)で作成したGradientというクラスを利用します。 public class SteepestDescentMethodMV…

【C#】 黄金分割法による最適化

今回は黄金分割法を使って一変数関数の最適化を行う方法をメモします。 public class GoldenSectionSearch { private static readonly double _ratio = (3.0 - Math.Sqrt(5.0))/2.0; /// <summary> /// 黄金分割法による最適化を行うメソッド /// </summary> /// <param name="f">一変数関数</param> /// <param name="minX"></param>…

【C#】 最急降下法による一変数関数の最適化

最急降下法を利用して一変数関数の最適化を行うクラスを実装します。最急降下法ではここ(【C#】 微分を計算するクラス - 旅行好きなソフトエンジニアの備忘録)で作成したDerivativeというクラスを利用します。 public class SteepestDescentMethod1V { pri…

【C#】 勾配ベクトルを計算するクラス

今回は偏微分を計算するクラス(【C#】 偏微分を計算するクラス - 旅行好きなソフトエンジニアの備忘録)を使って 勾配ベクトルを計算するクラスを実装します。 public class Gradient { private const double _h = 1e-5; public static double[] Compute(Fu…

【C#】 偏微分を計算するクラス

偏微分を計算するクラスを作成します。 public class PartialDerivative { private const double _h = 1e-5; /// <summary> /// 偏導関数を計算するメソッド /// </summary> /// <param name="f">関数</param> /// <param name="index">偏微分を行うインデックス</param> /// <returns>fの偏導関数</returns> public static Func<double[], double> Compute(Func</double[],>

【C#】 微分を計算するクラス

微分を計算するクラスを作成します。まずはクラスのソースコードです。 public class Derivative { private const double _h = 1e-5; /// <summary> /// 導関数を計算するメソッド /// </summary> /// <param name="f">関数</param> /// <returns>fの導関数</returns> public static Func<double, double> Compute(Func<double, double> f) { return x => (f(</double,></double,>…