- データ型は8bit符号無し整数型(uint8)です
- 差分が負の値になる場合は0(黒)に飽和します
- 画像の枚数は n、差分画像の枚数は n-1 です
数列の計算式の作成(画像処理,差分画像作成)
7 ビュー (過去 30 日間)
古いコメントを表示
JPEG画像で,連続する差分画像を作成しています.
JPEGデータの名前が「1.jpg, 2.jpg, 3.jpg, ・・・ k.jpg, k+1.jpg」となっていたとします.
I(k) = imread ("k.jpg");
def(k) = I(k+1) - I(k);
figure(def(k))
という数列式を作成したいと思います.
I(1) = imread ("1.jpg")
I(2) = imread ("2.jpg")
I(3) = imread ("3.jpg")
・・・
というように,一つ一つ画像を読み込ませて,差分画像をつくることはできるのですが,
for 関数を用いて,k = 1~n で連続する自然数で展開しようとすると,うまくいきません.
数式について教えていただけますでしょうか.
0 件のコメント
採用された回答
Atsushi Ueno
2023 年 2 月 2 日
n = 0; % 画像(I)の枚数、差分画像(def)の枚数はn-1
for k = 1:n
I{k} = imread(k+".jpg"); % k枚目の画像を読み込む
if k > 1 % 2枚目から差分画像を計算する
def{k-1} = I{k} - I{k-1}; % 差分画像を計算する
imshow(def{k-1}); % 差分画像を表示する
end
end
その他の回答 (1 件)
Atsushi Ueno
2023 年 2 月 2 日
編集済み: Atsushi Ueno
2023 年 2 月 2 日
imds = imageDatastore(pwd); % 現在のフォルダに 1.jpg, 2.jpg, 3.jpg... が存在すると仮定
I = readall(imds);
def = cellfun(@minus,I(2:end),I(1:end-1),'uni',false);
imshow(cell2mat(def));
1 件のコメント
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!