2012-05-11 21 views
6

Sadece görüntüdeki kontrastı/parlaklığı gri tonlamalı olarak ayarlamaya çalışıyorum. Bu resimdeki beyazları vurgulamak için Opencv ile C. Bunu nasıl yapabilirim? Bu görevi opencv yapan herhangi bir işlev var mı?C'deki OpenCV'de kontrastı nasıl ayarlayabilirim?

Orjinal resim:

enter image description here

Modifiye resim: önceden

enter image description here

teşekkürler!

+0

Onları opencv olarak ayarlamak mümkündür. Bir görüntü ekleyebilirseniz, sonra ne istediğinizi açıklarsanız daha kullanışlı olur. –

+0

@Abid Rahman K Resimler eklendi .. – edsonlp1

+0

Sonuç olarak istediğiniz ikinci görüntü mü? Eğer öyleyse, onu nasıl yaptın? Aynı Opencv –

cevap

8

ben iki şekilde burada kontrastı ayarlayabilirsiniz düşünüyorum. Aşağıdaki verilmiştir:

enter image description here

2) Eşik: Burada

, i) 127 aldı gelişigüzel bir değere, sahip girdi her bir piksel değeri (karşılaştırılmıştır. Aşağıda opencv'de dahili fonksiyona sahip mantık bulunmaktadır.

enter image description here

Bunun için, size zorunlu ise Threshold function veya compare function

3) kullanabilirsiniz: But remember, output is Binary image, not grayscale as you did.

If (input pixel value >= 127): 
    ouput pixel value = 255 
else: 
    output pixel value = 0 

Ve aşağıda ı got sonucudur çıktı olarak gri tonlamalı resim alın, aşağıdaki gibi yapın::

(kod OpenCV-Python olmakla birlikte, her işlev için, karşılık gelen C fonksiyonları opencv.itseez.com mevcuttur)

for each pixel in image: 
    if pixel value >= 127: add 'x' to pixel value. 
    else : subtract 'x' from pixel value. 

('x' keyfi bir değerdir.) Bu yüzden Açık ve koyu pikseller arasındaki fark artar. Aşağıda

img = cv2.imread('brain.jpg',0) 

bigmask = cv2.compare(img,np.uint8([127]),cv2.CMP_GE) 
smallmask = cv2.bitwise_not(bigmask) 

x = np.uint8([90]) 
big = cv2.add(img,x,mask = bigmask) 
small = cv2.subtract(img,x,mask = smallmask) 
res = cv2.add(big,small) 

Ve

elde edilen sonuçtur:

enter image description here

+0

ile yapmak istiyorum. Teşekkür ederim. Eşikleme benim için mükemmel çalışıyor! – edsonlp1

+8

Bunların hiçbiri soruya değil, yani kontrastın nasıl ayarlanacağı sorusu –

+1

, soru başlığının 'kontrastın nasıl ayarlanacağı' olduğu doğrudur. Ancak, söz konusu şey yapmak istediği, görüntüdeki beyaz parçayı vurgulamaktır. Ben de bunun için sahip olduğum bilgi ile cevap verdim. Ve tabii ki, yorumda, OP bir yöntem onun için mükemmel çalışır söyledi. Bu yüzden problemi ele aldığını düşünüyorum. Sadece unvanı göz önünde bulundurarak haklı olabilirsin. :) –

2

Bu konuda, Brightness and contrast adjustments, hisse kodu ve görevi başarmak için nasıl ayrıntılı bir açıklama resmi OpenCV belge.

+5

Aslında öyle değil. Kötü bir örnek sağlar ve açıklamayı satın alabileceğiniz bir kitaba bağlar. –

+1

Bu belge kesinlikle yararsızdır. – grill

+1

bu bilinmeyen bir ana bilgisayara yönlendirir –

8

Ayrıca OpenCV CLAHE algoritmasını da kontrol edebilirsiniz. Histogramı global olarak eşitlemek yerine, görüntüyü çini içine böler ve bunları yerel olarak eşitler, sonra birbirine birleştirir. Bu çok daha iyi bir sonuç verebilir. OpenCV 3.0.0 kendi imajınız ile

:

import cv2 
inp = cv2.imread('inp.jpg',0) 
clahe = cv2.createCLAHE(clipLimit=4.0, tileGridSize=(8,8)) 
res = clahe.apply(inp) 
cv2.imwrite('res.jpg', res) 

oldukça güzel bir şey verir

After CLAHE

süper yararlı olmasa, burada bu konuda daha fazla bilgi: http://docs.opencv.org/3.1.0/d5/daf/tutorial_py_histogram_equalization.html#gsc.tab=0

İlgili konular