LoginSignup
2
1

画像のエッジを際立たせる【道具としての OpenCV 画像認識】

Last updated at Posted at 2024-03-15

本記事でできること

元画像
Screenshot from 2024-03-03 19-44-05.png

エッジ抽出した画像
Screenshot from 2024-03-03 20-49-07.png

想定シーン

ロボットをビジュアルフィードバック制御する

カメラを使ったロボットアームの制御方法を、ビジュアルフィードバック制御といいます。ここでは、ビジュアルフィードバック制御を使った自動化システムを開発する際に必要となる画像認識プログラムをまとめています。

画像のエッジを際立たせる

ビジュありフィードバック制御をするために、撮影した画像のなかに写った物体のエッジを強調したり、エッジ部分を抽出してその部分を除去したりなどの処理をかけたい場合があります。本記事では、エッジ抽出を行うプログラムを掲載します。

実行環境

  • OS:Ubuntu 22.04 LTS
  • 言語:C++
  • クルーボ:v5.1.0

クルーボについて

ロボットアプリケーション開発には、株式会社チトセロボティクスのロボット制御ソフトウェア「クルーボ」を使用します。本記事のプログラムは、クルーボがインストールされた制御コンピュータ上で動作します。

プログラム抜粋

cv::Mat canny_edge(const cv::Mat& image, const int threthold) {
    cv::Mat canny_image;
    const int base_threthold = 50;
    cv::Canny(image, canny_image, base_threthold, base_threthold + threthold);
    return canny_image;
}

閾値(threthold)の値を変更することでエッジ抽出の際の細かさを変更できます。
なお、上記の画像では、背景のシートの細かい影のエッジを抽出してしまっています。

全体プログラム

#include <iostream>
#include <opencv2/opencv.hpp>

cv::Mat load_image(const std::string file_path) {
    cv::Mat loaded_image = cv::imread(file_path, 1);
    if (loaded_image.empty()) {
        throw std::runtime_error("画像を正常に読み込めませんでした。");
    }
    return loaded_image;
}

cv::Mat canny_edge(const cv::Mat& image, const int threthold) {
    cv::Mat canny_image;
    const int base_threthold = 50;
    cv::Canny(image, canny_image, base_threthold, base_threthold + threthold);
    return canny_image;
}

int main(void) {
    std::string file_path = "../data/green_sample.jpg";
    const cv::Mat loaded_image = load_image(file_path);

    const int threthold = 20;
    const cv::Mat edge_image = canny_edge(loaded_image, threthold);

    cv::imshow("window", edge_image);
    cv::waitKey(0);
}

おわりに

人手作業をロボットアームで自動化するために、カメラを使ったロボット制御=ビジュアルフィードバック制御が大切です。
ロボット制御用の画像認識でも中身のひとつひとつはシンプルなので、要素に分解して解説していきたいと思います。

2
1
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1