HistogramTransform[image]
ヒストグラムがほぼ平坦になるように image の画素値を変換する.
HistogramTransform[image,ref]
ヒストグラムが ref とほぼ同じ分布になるように image の画素値を変更する.
HistogramTransform[image,ref,n]
等間隔の n 個の分位点を使う.
HistogramTransform[{x1,x2,…},…]
値 xiを変換する.
HistogramTransform
HistogramTransform[image]
ヒストグラムがほぼ平坦になるように image の画素値を変換する.
HistogramTransform[image,ref]
ヒストグラムが ref とほぼ同じ分布になるように image の画素値を変更する.
HistogramTransform[image,ref,n]
等間隔の n 個の分位点を使う.
HistogramTransform[{x1,x2,…},…]
値 xiを変換する.
詳細
- HistogramTransformは画像ヒストグラムの形状を変える点演算である.ヒストグラム変換は均等化あるいは基準分布とのマッチングによく使われる.
- HistogramTransform[image]は,事実上ヒストグラム均等化と呼ばれる,ほぼ平坦なヒストグラムの画像を返す.
- HistogramTransform[image,ref]は image と ref の変位値の補間関数を求め,これを image の各画素に適用することで,事実上ヒストグラムマッチングとして知られているものである.
- HistogramTransformは,2Dおよび3Dの画像,また任意階数のデータ集合のリストに使うことができる.
- HistogramTransform[image,…]は入力画像と同じタイプの画像を返す.
- 多チャンネル画像の場合,HistogramTransform[image]は各チャンネルを別々に扱う.
- HistogramTransform[{data1,data2,…},…]は複数のデータ集合 dataiを変換する.
- HistogramTransform[image,ref]の ref は,一変量分布,1チャンネルもしくは image と同数のチャンネルを持つ画像,値のリスト,image のチャンネル数と同じ長さのデータ集合のリストのいずれかでなければならない.
- HistogramTransform[source]はHistogramTransform[source,UniformDistribution[{0,1}]]に等しい.
- HistogramTransform[source,ref,n]は等間隔で置かれた n 個の変位値を持つ補間関数を求める.
- HistogramTransform[image,ref]はHistogramTransform[image,ref,256]に等しい.
- HistogramTransform[data,ref,Automatic]とすると,変位値の数はHistogram[data]で使われるビンの数と等しくなる.
例題
すべて開く すべて閉じる例 (3)
スコープ (6)
データ (5)
data = {91, 69, 16, 16, 11, 24, 23, 7, 83, 79, 17, 22, 50, 37, 36, 61, 22, 34, 39, 63, 59, 75, 10, 81, 71, 73, 77, 27, 58, 1, 23, 61, 19, 27, 86, 36, 3, 30, 68, 89, 29, 57, 13, 92, 7, 60, 80, 53, 14, 66};
Histogram[data]HistogramTransform[data, NormalDistribution[60, 10]]Histogram[%]datasets = Table[RandomVariate[dist, 1000], {dist, {NormalDistribution[], ChiSquareDistribution[4], ExponentialDistribution[1 / 2]}}];
Histogram[datasets, ChartLayout -> "Stacked"]flat = HistogramTransform[datasets];
Histogram[flat, ChartLayout -> "Stacked"]i = [image];r = HistogramTransform[i, NormalDistribution[.5, .2]]ImageHistogram[#, 32, ImageSize -> 200]& /@ {i, r}画像のヒストグラムを各チャンネルが正規分布に従うように整形する:
HistogramTransform[[image], NormalDistribution[.5, .2]]HistogramTransform[\!\(\*Graphics3DBox[«8»]\)]アプリケーション (6)
基本的なアプリケーション (3)
{h, s, b} = ColorSeparate[[image], "HSB"];
ColorCombine[{h, s, HistogramTransform[b]}, "HSB"]{h, s, b} = ColorSeparate[[image], "HSB"];
ColorCombine[{h, HistogramTransform[s], b}, "HSB"]img = [image];
ImageCompose[img, {HistogramTransform[img], .5}]色変換 (2)
img = [image];ref = [image];
HistogramTransform[img, ref]HistogramTransform[ColorConvert[img, "LAB"], ColorConvert[ref, "LAB"]]カラー画像の同じような輝度を持つ近傍を探してグレースケール画像に彩色する:
img = [image];ref = [image];limg = First@ColorSeparate[img, "LAB"];
{lref, aref, bref} = ColorSeparate[ref, "LAB"];l2 = HistogramTransform[limg, lref];
ImageHistogram /@ {l2, lref}輝度の近傍統計値を計算し,最も近い輝度近傍に関連する色を与える関数を書く:
radius = 2;
{neighimg, neighref} = ColorCombine[{
MeanFilter[#, radius],
StandardDeviationFilter[#, radius]}]& /@ {l2, lref};
nfun = Nearest[Flatten[ImageData@neighref, 1] -> Transpose[Flatten@ImageData@#& /@ {aref, bref}]];グレースケール画像の各画素の初期輝度を保ち,参照画像の直近の色を選んで新たな画素を作る:
col = Map[First@nfun[#, 1]&, ImageData@neighimg, {2}];
ColorConvert[Image[Join[{ImageData@limg}, Transpose[col, {2, 3, 1}]], Interleaving -> False, ColorSpace -> "LAB"], "RGB"]多次元確率密度関数の転写 (1)
反復的にランダムな周辺ヒストグラムを整形することで,多次元データ集合のヒストグラムを整形する:
multidimensionalReshape[source_, ref_, ϵ_ : 10 ^ -10, maxiterations_ : 200] :=
FixedPoint[
With[{R = randomRotationMatrix[Length[source]]},
Transpose[R].HistogramTransform[R.#, R.ref]]&,
source, maxiterations, SameTest -> (RootMeanSquare[Norm /@ Transpose[#1 - #2]] < ϵ&)];randomRotationMatrix[n_] := If[Det@# == 1, #, randomRotationMatrix[n]]&[Transpose@#.DiagonalMatrix[Sign@Diagonal@#2]&@@QRDecomposition@RandomReal[NormalDistribution[], {n, n}]];二項正規分布に従うサンプルにマッチするように二変量データ集合を整形する:
dist1 = DirichletDistribution[{1, 3, 2}];
dist2 = MultinormalDistribution[{-1, 1}, {{1, 1}, {1, 4}}];SeedRandom[0];
transformed = Transpose@multidimensionalReshape[
Transpose[x = RandomVariate[dist1, 1000]], Transpose@RandomVariate[dist2, 1000]];Histogram3D[#, Automatic, "PDF"]& /@ {x, transformed}変換されたデータが基準分布に従って分布しているかどうかをテストする:
DistributionFitTest[transformed, dist2]{h, s, b} = ColorSeparate[[image], "HSB"];
source = Flatten[ImageData[#]]& /@ {h, s};
With[{a = Range[0, 2π, 2π / 10000.]},
ref = 1 / 2 + 1 / 2 * {Cos[a], Sin[a]}];SeedRandom[0];
newhs = multidimensionalReshape[source, ref, 10 ^ -3];Histogram3D[Transpose@#, Automatic, "PDF"]& /@ {source, newhs}Image[Append[Partition[#, First@ImageDimensions@b]& /@ newhs, ImageData@b], Interleaving -> False, ColorSpace -> "HSB"]img = [image];ref = [image];
{width, height} = ImageDimensions[img];SeedRandom[0];
new = multidimensionalReshape[Flatten /@ ImageData[img, Interleaving -> False], Flatten /@ ImageData[ref, Interleaving -> False], 10 ^ -3, 5];Image[Partition[#, width]& /@ new, Interleaving -> False]特性と関係 (1)
HistogramTransformInterpolationを使ってHistogramTransformで使われる変換関数を得ることができる:
i = [image];
f = HistogramTransformInterpolation[i]ImageApply[f, i] == HistogramTransform[i]関連するガイド
-
▪
- 色の処理 ▪
- 画像復元 ▪
- 画像の処理と解析 ▪
- 計算写真学 ▪
- 顕微鏡検査のための画像計算
テキスト
Wolfram Research (2012), HistogramTransform, Wolfram言語関数, https://reference.wolfram.com/language/ref/HistogramTransform.html (2014年に更新).
CMS
Wolfram Language. 2012. "HistogramTransform." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2014. https://reference.wolfram.com/language/ref/HistogramTransform.html.
APA
Wolfram Language. (2012). HistogramTransform. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/HistogramTransform.html
BibTeX
@misc{reference.wolfram_2026_histogramtransform, author="Wolfram Research", title="{HistogramTransform}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/HistogramTransform.html}", note=[Accessed: 14-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_histogramtransform, organization={Wolfram Research}, title={HistogramTransform}, year={2014}, url={https://reference.wolfram.com/language/ref/HistogramTransform.html}, note=[Accessed: 14-November-2026]}