A kontraszt széthúzással a kép intenzitástartományának egy szűkebb részét tudjuk széthúzni a teljes tartományra. Ezzel egy szűkebb tartományt tudunk kiemelni, kontrasztosan megjeleníteni, a kívül eső rész eltüntetésével.
Annyiban más, mint az előző, hogy a min-max értékek nem a hisztogram min-max helyei szerint kerülnek meghatározásra. Megadhatjuk manuálisan, eltávolítandó százalékos darabszámmal, vagy kiszámíthatjuk tetszőleges más módon.
A következő példánkban egy szürkeárnyalatos kép esetén a [100, 140] közötti értékek kerülnek a [0, 255] tartományra. A széthúzást két küszöbparaméterrel adhatjuk meg. Az alsónál kisebb értékek 0, a felsőnél magasabbak 255 értéket kapnak.
Érdekes módon az OpenCV nem ad közvetlenül használható függvényt a feladatra, a hatást több függvény (threshold(), normalize()) összehangolt működésével érhetjük el, vagy végigfutva egyenként az intenzitásértékeken. A NumPy segítségével is hasonló, de szintaktikailag egyszerűbb a megoldás. A vegyes megoldás a legegyszerűbb: a megadott küszöbértékekkel vágást végzünk (részletek az előző fejezetben) az intenzitástartományon, majd normalizáljuk (részletek korábban) a képet.
th_lower = 100
th_upper = 140
img[img > th_upper] = th_upper
img[img < th_lower] = th_lower
hist_stretch = cv2.normalize(img, None, 0, 255, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8UC1)
Színes kép esetén végezhetünk színtér konverziót és a széthúzást csak az Y csatornán hajthatjuk végre, vagy minden csatornára külön is megtehetjük.