impixelを使用​して矩形領域のピクセ​ル値を取得するにはど​うすればよいですか。

impixel関数を用いて、画像の矩形領域(例えば5行5列の25ピクセル)のピクセル値を取得したいです。
c = [ ];
r = [ ];
impixel (Image , c, r)
において、cとrをどのように定義すればよいでしょうか。

6 Kommentare

Atsushi Ueno
Atsushi Ueno am 6 Apr. 2023
Verschoben: Atsushi Ueno am 6 Apr. 2023
実直に従えばこうなります。c と r にスカラ値を加算すれば矩形領域の座標を動かす事が出来ます。
Image = imread('peppers.png');
c = [1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5] + 130;
r = [1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5] + 140;
Pixel = impixel (Image , c, r)
Pixel = 25×3
121 119 22 116 115 10 113 110 12 125 94 23 141 48 31 122 118 17 115 113 10 126 97 22 141 56 34 148 22 34
%imshow(uint8(reshape(Pixel,[],5,3)))
Atsushi Ueno
Atsushi Ueno am 6 Apr. 2023
Verschoben: Atsushi Ueno am 6 Apr. 2023
もう少し改善すると
Image = imread('peppers.png');
[r,c] = meshgrid(1:5,1:5);
Pixel = impixel(Image,c(:)+130,r(:)+140);
HI
HI am 6 Apr. 2023
Verschoben: Atsushi Ueno am 6 Apr. 2023
分かりやすくご回答頂きありがとうございました。
HI
HI am 7 Apr. 2023
meshgridの初期位置は、座標(1, 1)でしょうか。ご教授ください。
Atsushi Ueno
Atsushi Ueno am 7 Apr. 2023
>meshgridの初期位置は、座標(1, 1)でしょうか。ご教授ください。
⇒はい。オフセット無しなら座標(1, 1)です。実際にプログラムを動かしてみれば一目瞭然です。
[r,c] = meshgrid(1:5,1:5)
r = 5×5
1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
c = 5×5
1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5
[r,c] = meshgrid(11:15,20:22) % 書いた通りに生成されます
r = 3×5
11 12 13 14 15 11 12 13 14 15 11 12 13 14 15
c = 3×5
20 20 20 20 20 21 21 21 21 21 22 22 22 22 22
HI
HI am 7 Apr. 2023
ありがとうございました。

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Hiroshi Iwamura
Hiroshi Iwamura am 6 Apr. 2023

1 Stimme

余談ですが、対話型ですので
I = imread('peppers.png');
[x, y, p] = impixel(I)
としてマウスクリックで指定すれば(リターンで終了)座標も得られます。
その座標をそのまま使って
p2 = impixel(I,x,y);
とすることもできます。

1 Kommentar

HI
HI am 10 Apr. 2023
追加の情報ありがとうございました。

Melden Sie sich an, um zu kommentieren.

Produkte

Version

R2022b

Gefragt:

HI
am 6 Apr. 2023

Kommentiert:

HI
am 10 Apr. 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!