Mat2gray variant with dimension option

버전 (2.54 KB) 작성자: Jurgen
Normalizes sections of an N-D matrix divided along DIM to the 0.0-1.0 range.
다운로드 수: 412
업데이트 날짜: 2013/2/13

라이선스 보기

Similar to mat2gray. Except dim2gray allows user to specify a dimension DIM that will determine the limits used to normalize values in that dimension.
In contrast, mat2gray scales all values in A based on 2 values (min and max by default).

I found it useful for normalizing RGB/HSV images per color channel in 1 short command, but tried to make it so it accepts N-D matrices.

from the help:
DIM2GRAY - Normalize N-dimensional array along a specified dimension.
Normalizes (i.e. scales values) in matrix A along the dimension DIM
B has type double or single in the 0-1 range, and is the same size as A.
DIM is an integer scalar--A is 'sliced' along DIM.
LIMS, optional, is a Nx2 vector of limits--where N == size(A,DIM).
It specifies limits per dimensional slice, similar to mat2gray(A,LIMS).
Usage without LIMS defaults to min-max, like mat2gray(A), only
dim2gray uses min-max limits per slice/chunk. Use NaN to specify a
min or max limit.

Example: an HSV image
A = imread('peppers.png');
A = rgb2hsv(A);
B = dim2gray(A,3)

Will linearly normalize every color plane to 0.0 & 1.0 based on the min
and max *per channel*. Equivalent to:
B = cat(3,mat2gray(A(:,:,1)),mat2gray(A(:,:,2)),mat2gray(A(:,:,3)));

%This clips range at .1 and .9:
C = dim2gray(A,3,[0.1 0.9;0.1 0.9;0.1 0.9])

Example: Multiple measurements of signal(e.g. voltage) over time
Let every row be a measurement(5) and every column a timepoint(32).
DATA = rand(5,32);
dim2gray(DATA,2); %normalize every measurement to 0-1 range
dim2gray(DATA,1); %normalize every unique timepoint to 0-1 range

Hope it helps. Welcome feedback.

인용 양식

Jurgen (2024). Mat2gray variant with dimension option (, MATLAB Central File Exchange. 검색됨 .

MATLAB 릴리스 호환 정보
개발 환경: R2008a
모든 릴리스와 호환
플랫폼 호환성
Windows macOS Linux
Help CenterMATLAB Answers에서 Modify Image Colors에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!
버전 게시됨 릴리스 정보

Corrected bug in NaN handling for LIMS.

Something went wrong with previous edit, no change. New attemp.


Cleaned up code & comments. Added LIMS option.