それぞれの値をシフトするなら,セットしてしまってもいいのではないかと思い付きで作った関数です.前回の 特定の色をシフトしてみる と同じく条件に合う範囲のピクセルを変更します.シフトのときと違う部分は条件に合う範囲のHSVの値を引数で与えられた値に変更するため,その範囲内は全て同じ色相,彩度,明度になります.
void Hsvsetbright(Image *img, unsigned char bright, unsigned char bottom, unsigned char top) { int i, j; for(i=0; i<img->height; i++){ for(j=0; j<img->width; j++){ if(img->hsv[i*img->width + j].v >= bottom && img->hsv[i*img->width + j].v <= top) img->hsv[i*img->width + j].v = bright; } } }