-1

逆ガンマ補正に関する表があります。これらは、0から256までの値に対応しています。この関数の逆関数を計算する方法が必要です->0、2、6、9、..のようなもの

誰かがそれを行うことができるフリーウェアツールまたは私がCで書くことができるアルゴリズムを教えてくれれば幸いです。

0、0、1、1、1、1、2、2、2、3、3、3、3、4、4、4、5、5、5、6、6、6、6、7、7 7、8、8、8、9、9、9、10、10、10、11、11、11、12、12、12、13、13、14、14、14、15、15、15、16 16、16、17、17、18、18、18、19、19、20、20、20、21、21、22、22、22、23、23、24、24、25、25、25、26、 26、27、27、28、28、29、29、30、30、31、31、31、32、32、33、33、34、34、35、35、36、37、37、38、38、 39、39、40、40、41、41、42、43、43、44、44、45、45、46、47、47、48、48、49、50、50、51、52、52、53、 54、54、55、56、56、57、58、58、59、60、61、61、62、63、64、64、65、66、67、67、68、69、70、71、71、 72、73、74、75、76、77、77、78、79、80、81、82、83、84、85、86、87、88、89、90、91、92、93、94、95、 96、97、98、99、101、102、103、104、105、106、108、109、110、111、113、114、115、116、118、119、121、122、123、125、126、 128、129、131、132、134、135、137、138、140、142、143、145、147、148、150、152、154、156、157、159、161、163、165、167、169、171、173、175、178、180、182、184、187、189、191、194、196、199、201、 204、207、209、212、215、218、221、224、227、230、233、236、239、243、246、249、253、

4

3 に答える 3

1

非減少関数のルックアップテーブルを反転する方法を尋ねています。これはきれいではありません(またはテストされていません)が、Cで動作する可能性があります:

const int N=256;
extern int nondecreasing_sequence[N];
int invert_nondecreasing_sequence(int* sequence, int* inverse)
{
  int x=0, y=*sequence++, inverse_length=1;
  for (*inverse++=y; ++x<N; sequence++)
  {
    if (y < *sequence)
    {
      *inverse++ = y = *sequence;
      inverse_length++;
    }
  }
  return inverse_length;
}

または、Perlの場合(表示:Windowsの場合; Linuxの場合は'と"を交換します):

perl -e "@a=map{split/,\s*/}@ARGV;@b=(0,grep{$a[$_]>$a[$_-1]}1..$#a);print join(', ',@b).chr(10)" "0, 0, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, ..."

この質問は、定式化されているように(ガンマ補正についての実際の質問はありません)、おそらく別のフォーラムに属しています。

于 2011-12-12T12:45:34.910 に答える
0

ソートされた数値の配列を扱っているので、二分探索を使用します。

于 2011-12-14T13:49:49.457 に答える
0

シェル内:

 awk -F ',' '{ if (FNR == 1 || $1 != l) print FNR-1; l = $1; }'
于 2011-12-14T13:53:14.093 に答える