visual basic ile 24 bit bmp renk bilgilrini nası okurum.

Başlatan ilhan_mkp, 03 Kasım 2014, 00:42:14

ilhan_mkp

x satır y sutun 24 bit bmp resminden header vs ne varsa ilk byteden itibaren tek tek okuya bilirmiyim.
mesela elimdeki resim 197 satır 300sutun.
010 editör isimli bir program ile baktım bitmap 36h adresinden başlıyor.
her pixel 3 byte renk bilgisi içeriyor.
içriği anladım ama bu bitmapten byteler halinde pixel verilerini nasıl alabilirim.

atomx

http://www.uvm.edu/~rerickso/education/vb_bmp/BMP.html

burada oluşturma hakkında kod var. buradan çıkarırsın visual basic bilmem ama bitamp okuma için önce header verisini almalısın içeriği hakkında bilgi ise;
http://www.daubnet.com/en/file-format-bmp
iyi çalışmalar
Hüseyin TECER

ilhan_mkp

hocam header ile ilgili ayrintilari biliyorum.
bmp dosyasini byte olarak vb ile okuyamiyorum.

Kabil ATICI

Buna benzer bir olayı resmi picture alanına alıp, piksel piksel tarayarak çözmüştüm.
ambar7

ilhan_mkp

benimde asıl amacım o aslında renk ve mesafe arasında nasıl bir ilişki var bakayım dedim.
beceremedim :)

Kabil ATICI

ambar7

ilhan_mkp

hocam aslında uzun mesafe değilde şöyle kalınlık ölçümü yapabilirmiyim.
sonra sağlam red ürün testi gibi karşılaştırmalar bunlar için acaba olurmu denemeleri.
ben ilkel bişi yapıp olayın işleyişini anlamak istiyorum.

Kabil ATICI

Tek bir görüntü üzerinden zor. Derinlik olayı sorunu var. Bildiğim kadarı bu tür durumlarda iki kameradan alınan görüntü ile çalışılıyor.
Eğer sadece deneme ise  getpixel komutu ile bir görüntüden istediğin noktadan renk bilgisini alabilirsin.
http://msdn.microsoft.com/tr-tr/library/system.drawing.bitmap.getpixel(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2

örnek olarak başlangıç noktası. Dosya olayına girmedim.

Normalde bunu tek renkli LCD'ler için siyah beyaz görüntüden veri tablosu için kullanıyorum.
Bir picture alanı açıp bunun üzerine resmi alıyorum, sonra buradaki resim üzerinde getpixel ile renk bilgisini alıp değerlendiriyorum.
ambar7

ilhan_mkp

iki kmeralı sistem nasıl yapıyor bu işi olayın işleyişi nedir.
görüntü işlemeyle hiç uğraşmadım ama hoşuma gitti bu konu.

Kabil ATICI

İşin matematiğini fazla uğraşmadım, iki kamera arasındaki farktan dolayı oluşan yapıdan oluyor.
Şu anda iki gözü bulanan tüm canlılarda (özellikle avcılarda) derinlik kavramını sağlamak için kullanılıyor. Ama bizim kullandığımız kamera sisteminde  ve canlıların beyin işlem gücünde olduğu kadar hassas olacağını sanmıyorum.

Bu konunun bazı üniversitelerde araştırma konuşu olduğunu bazı internet yayınlarında rastladım. Nesne tanıma, belli bir nesneye odaklanma nesne takibi gibi konularda çalışılıyor.
ambar7

ilhan_mkp

hocam ben öyle koşan çeylan falan analiz etmeye çalışmıyorum.
bizim müşteriler kuzu kuzu yerinde duran somunları test etmek için yaptığı harcamalar gözüme battı.
5mm bir malzemenin yokluğunu farketmek zor olmaz heralde diye araştırıyorum.
24 bit bitmap gözüme kolay göründü.

Kabil ATICI

işe basitten başla istersen üçgen, kare, dikdörtgen gibi nesneleri tanımlatmayı bir dene (kamera görüntüsü olmasa bile olur.)... Sonrası gelir.
İşin içine iyi bir matematik girecektir.
Analiz esnasında renkleri azaltman gerekecek.Nesneler üzerindeki tonlama yüzünden.
ambar7

ilhan_mkp

#12
aslında ben onaylı ürün eksik üretim karşılaştırması yapmayı düşünüyordum.
ama şekilleri algılamak çok daha iyi sonuçlar vercektir.

mesaj birleştirme:: 03 Kasım 2014, 23:17:14

[codeDim image1 As Bitmap

Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click

    Try
        ' Retrieve the image.
        image1 = New Bitmap( _
            "C:\Documents and Settings\All Users\Documents\My Music\music.bmp", _
            True)

        Dim x, y As Integer

        ' Loop through the images pixels to reset color.
        For x = 0 To image1.Width - 1
            For y = 0 To image1.Height - 1
                Dim pixelColor As Color = image1.GetPixel(x, y)
                Dim newColor As Color = _
                    Color.FromArgb(pixelColor.R, 0, 0)
                image1.SetPixel(x, y, newColor)
            Next
        Next

        ' Set the PictureBox to display the image.
        PictureBox1.Image = image1

        ' Display the pixel format in Label1.
        Label1.Text = "Pixel format: " + image1.PixelFormat.ToString()

    Catch ex As ArgumentException
        MessageBox.Show("There was an error." _
            & "Check the path to the image file.")
    End Try
End Sub]

http://msdn.microsoft.com/tr-tr/library/system.drawing.bitmap(v=vs.110).aspx

bu örnek işime yarayacak gibi tam aradığım örnek buydu her pixeli tek tek ele alıyor daha sonra yazıyor.
hatta rengi zayiflatma olayına yararı olan bir kısım var.

ilhan_mkp

hocam bu konu çok güzel gerçekten sardı ama kenar bulma algoritalarına bakıyorum benim sayısal alt yapım anlamama engel olmaya başladı.
sobel algoritması var komşu pixellerle birlikte küme halinde işlem yapıyor azcık onu anlar gibi oldum.