このプログラムをさらに改良し、ヒストグラム(グレースケール画像のヒストグラム)から、最小値、最大値、平均値、分散、中央値、最頻値の6つの統計量を計算・表示するプログラムを作成しなさい。
といった問題なのですが、誰か詳しい方教えてくれませんか。
#include <stdio.h>
#include <opencv.hpp>
#pragma warning(disable: 4996)
using namespace cv;
int main(int argc, char** argv)
{
//画像データ用変数の宣言
Mat src_img;
//画像データの読み込み
src_img = imread("C:\\opencv4.3.0\\sources\\samples\\lena.jpg", 0);
int m = src_img.cols; //画像の幅(列)xを取得
int n = src_img.rows; //画像の高さ(行)yを取得
int hist[256]; //ヒストグラム(度数分布表)用の配列
FILE* fp;
fp = fopen("histogram.txt", "w+"); // ファイルを開く
//配列histを初期化
for (int i = 0; i <= 255; i++) {
hist[i] = 0;
}
//ヒストグラム(度数分布表)の作成
for (int y = 0; y < n; y++) {
for (int x = 0; x < m; x++) {
hist[src_img.data[y * src_img.step + x]] ++; //ある画素値の度数を計数
}
}
//度数分布表の書き込み
for (int i = 0; i <= 255; i++) {
printf("%d %d\n", i, hist[i]);
fprintf(fp, "%d %d\n", i, hist[i]);
}
fclose(fp); // ファイルを閉じる
//画像の表示用ウィンドウを生成
namedWindow("TEST_IMAGE", WINDOW_AUTOSIZE);
//画像の表示
imshow("TEST_IMAGE", src_img);
//キー入力待ち
waitKey(0);
return 0;
}
No.1ベストアンサー
- 回答日時:
画像処理はあまり詳しくないので自信はありませんが、
ヒストグラム配列 hist から統計量を計算するならば
画素値の最小値 = hist で最初に 0 でない位置
画素値の最大値 = hist で最後に 0 でない位置
画素値の平均値 = Σ[i=0..255](i * hist[i]) / 画素数
画素値の分散 = Σ[i=0..255]( hist[i]*(i - 平均値)^2 ) / 画素数
画素値の中央値 = Σ[i=0..x]hist[i] が 画素数/2 を超える最小の x
画素値の最頻値 = hist 内で最大数の位置
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
見学に行くとしたら【天国】と【地獄】どっち?
みなさんは、一度だけ見学に行けるとしたら【天国】と【地獄】どちらに行きたいですか? 理由も聞きたいです。
-
【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
【お題】・忍者がやってるYouTubeが炎上してしまった理由
-
モテ期を経験した方いらっしゃいますか?
一生に一度はモテ期があるといいますが、みなさんどうですか? いまがそう! という方も、「思い返せばこの頃だったなぁ」という方も、よかったら教えて下さい。
-
【選手権お題その3】この画像で一言【大喜利】
とあるワンシーンを切り取った画像。この画像で一言、お願いします!
-
【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
【お題】追い込まれた犯人が咄嗟に言った一言とは?
-
ヒストグラム均等化処理プログラム
C言語・C++・C#
-
ガンマ変換 C言語でプログラムの作成
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「指定されたキャストは有効で...
-
複数桁10進数の*桁目だけを抽出...
-
C言語での引数の省略方法
-
【C++】関数ポインタの使い方
-
acceptをalarmでタイムアウトさ...
-
C言語 エラーの原因がわからな...
-
#define _CRT_SECURE_NO_WARNIN...
-
systemの戻り値を取得する方法
-
(int *)の意味
-
質問項目をランダムで選択する...
-
C言語で分からないところがあり...
-
return 1L
-
ラップ関数とはどんなものですか?
-
単語の出現回数を数え、出現回...
-
「{ } で囲むだけ」は正しい?
-
CStringの配列要素を関数で受け...
-
C言語の課題です
-
C言語でDxlibを使って3x3の奇数...
-
16進数を入力とするatoi関数...
-
read関数をノンブロッキングで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
C言語 エラーの原因がわからな...
-
#define _CRT_SECURE_NO_WARNIN...
-
複数桁10進数の*桁目だけを抽出...
-
【C++】関数ポインタの使い方
-
ラップ関数とはどんなものですか?
-
ColorをRGBで指定する方法
-
(int *)の意味
-
足して100になるような乱数のア...
-
シェルピンスキーのギャスケット
-
if と配列の組み合わせ
-
実数の整数部,小数部の取得
-
構造体の勉強中です 合計点の高...
-
「{ } で囲むだけ」は正しい?
-
c言語の配列を使ってサイコロを...
-
式は定数値が必要です」という...
-
acceptをalarmでタイムアウトさ...
-
read関数をノンブロッキングで...
-
std::set<int> で、ある値が何...
おすすめ情報