uEye SDK 4.22

iDS kameralar için, uEye SDK 4.22 çıktı. Yeni kameralar ve yeni özellikler sunan SDK da, en beğendiğim özellik sharpness (keskinlik) kotrolünü içermesi.

Araç çubuğunda yer alan, acı biber şeklindeki 🙂 buton yardımı ile, çizdiğimiz dörtgensel bölgenin keskinliği (sharpness) gösterilmektedir. Böylece, lens üzerinden fokus kontrolü yaparken, gözle gördüğümüze değil, programın bize gösterdiği değere göre karar vermek mümkün olmaktadır. Özellikle amatör ya da son kullanıcıların fokus ayarı yapması çok kolay bir hale gelmiştir.

Hemen aşağıda, (Out of Focus) iyi fokus edilmemiş lens ile alınan görüntüde, ekrana çizdiğim AOI kırmızı renk ile uyarıyor. (Halihazırdaki fokus değeri : 58, olması gereken : 142 ifadeleri ile)

 

Hemen aşağıda ise iyi fokus edilmiş lens ile alınan görüntü yer alıyor. (Halihazırdaki fokus değeri : 144, olması gereken : 145 ifadeleri ile)

 

Aynı fonksiyonalite, SDK tarafından sharpness sınıfı ile sağlanmaktadır. Yapay Görme uygulamamız, kameraları ilk yüklediğinde, fokus ayarlarının düzgün olup olmadığını kontrol edebilir. Eğer fokus değerimiz bozulmuş ise, kullanıcı uyarılabilir, istenen fokus değerine getirmesi sağlanabilir. (Mavis VYP arabirimi, kullanıcının focus yapabilmesine olanak tanıyan arayüz geliştirmiştir. Sola döndür, sağa hafif döndür gibi kullanıcı dostu ifadeler ile operatör yönlendirilmektedir.)

uEye SDK kullanarak görüntünün Bitmap olarak alınması

iDS uEye Kameraları, güçlü bir SDK ile gelmektedir. Bu SDK, görüntünün kameradan düzgün bir şekilde alınabilmesi içindir. uEye Cockpit programında elle yapılan tüm işlemlerin kod ile (program) yapılabilmesi içindir. (Pozlama, kazanç, pixel clock, frame rate vs…)

Eğer uEye SDK düzgün olarak yüklenmişse, makinanızda IDS klasörü altında resimdeki gibi, tüm gerekli dosyalar klasörler olacaktır. Buradaki örneklere ve yardım dosyalarına göz atmakta fayda vardır. Unutulmamalıdır ki, uEye SDK, bir görüntü işleme kütüphanesi değildir. (bir HALCON değil mesela)

Bize .NET, Directshow, ActiveX ve yaygın görüntü işleme kütüphaneleri için interface ler sunar. Yani ben sana görüntüyü veririm, sen al ne yaparsan yap der.

Bazı iDS uEye kullanan müşterilerimiz, görüntüyü bitmap olarak almak ve bu bitmap olarak alınmış görüntüde pixel-pixel kendi algoritmalarını geliştirmek istemektedirler. Her ne kadar iç içe for döngüleri ile pixel-pixel çalışmak hayli zahmetli ve ilkel bir yöntem olsa da, çok basit ve zaman sorunu olmayan görüntü işleme uygulamalarında iş görüyor olabilir. Dolayısıyla, tüm bu yazının özeti, bize sık sorulan, iDS uEye kameralar kullanarak görüntüyü bitmap olarak nasıl alırım sorusuna bir cevap yazalım.

1 .NET interface kullanmak

Object Oriented mantığına göre geliştirilmiş .NET interface kullanmak en doğru yöntemdir.

Başlangıç olarak, uEye_DotNet_Simple_Live isimli C# uygulamasını açın. En temel fonksiyonları ve kullanımını basitçe göstermektedir.  Bunu çalıştırın. Herşey yolunda ise, çok küçük bir ekleme yapalım.

Bir PictureBox komponeti koyalım. (Bitmap nesnesini bunun üzerine atayacağız)

Şimdi Freeze butonuna aşağıdaki kodları ekleyelim.

            uEye.Defines.Status statusRet = 0;

            // Get last image memory
            Int32 s32LastMemId;
            Int32 s32Width;
            Int32 s32Height;
            statusRet = Camera.Memory.GetLast(out s32LastMemId);
            statusRet = Camera.Memory.Lock(s32LastMemId);
            statusRet = Camera.Memory.GetSize(s32LastMemId, out s32Width, out s32Height);

            Bitmap MyBitmap;
            statusRet = Camera.Memory.ToBitmap(s32LastMemId, out MyBitmap);

            // unlock image buffer
            statusRet = Camera.Memory.Unlock(s32LastMemId);

            pictureBox_bmp.SizeMode = PictureBoxSizeMode.StretchImage;
            pictureBox_bmp.Image = MyBitmap;

Görüldüğü gibi, Freeze() ile kamerayı video modundan çıkartıp stil image (sabit görüntü alma) moduna getirdim, ve kamera üzerindeki aktif görüntüyü bir bitmap değişkenine aldım. Sonra da onu pictureBox1 nesnesine atadım (siz dilediğiniz gibi kullanabilirsiniz)

Freeze() ile görüntüyü durdurabilir, Freeze(100) gibi bir komutla, 100 ms bekletebilirsiniz.

Ethernet kamera kullanıyorsanız, GetActive() , GetLast() vs deneyebilirsiniz. (Aktif olan görüntüyü değil de en sonuncusunu ver vs.)

ya da, henüz yeni görüntü oluşmamışsa (frame_rate 10 ise, 100 ms. de 1 yeni görüntü oluşacaktır gibi) bu durumda

Camera.Acquisition.Freeze(100)

gibi bir komutla, 100 ms beklemesini isteyebilirim. Uygulamaya göre değişir. sonuçta elimde Bitmap türünden görüntü mevcuttur artık.

2. dll kullanarak Bitmap olarak alma

(.NET çıkmadan önce yazdığım eski bir makaleydi bu. Orijinal haliyle bırakıyorum, .NET varken kullanılmasını çok da tavsiye etmem ama hala iş görür)

SDK ve uEye_api dll kullanımı için, Program Files altındaki IDS klasöründeki yer alan uEye_CSharp_Demo güzel bir örnek oluşturmaktadır. Burada, kameradan alınan görüntü (canlı ya da tek bir kare) .NET PictureBox bileşeni üzerinde gösterilmektedir. görüntüyü direk olarak PictureBox bileşeninin Handle ına atamak yerine Bitmap nesnesi olarak almak (ve işlemek) için, aşağıdaki kod kullanılabilir.

        private void button1_Click(object sender, EventArgs e)
        {
            Bitmap MyBitmap;

            // get geometry of uEye image buffer
            int width = 0, height = 0, bitspp = 0, pitch = 0, bytespp = 0;
            long imagesize = 0;
            m_uEye.InquireImageMem(m_pCurMem, GetImageID(m_pCurMem), ref width, ref height, ref bitspp, ref pitch);
            bytespp = (bitspp + 1) / 8;
            imagesize = width * height * bytespp; // image size in bytes

            // bulit a system bitmap
            MyBitmap = new Bitmap(width, height, PixelFormat.Format24bppRgb);

            // fill the system bitmap with the image data from the uEye SDK buffer
            BitmapData bd = MyBitmap.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
            m_uEye.CopyImageMem(m_pCurMem, GetImageID(m_pCurMem), bd.Scan0);
            MyBitmap.UnlockBits(bd);

            //picShow.Image = MyBitmap;
            pictureBox2.Image = MyBitmap;

            //Bitmap may be saved to file if necessary
            MyBitmap.Save("uEyeImage.bmp");
        }

3. ActiveX kullanmak

ActiveX, VB6 ya da Delphi kullanıcısı iseniz mantıklı olabilir .Her ne kadar 2014 sonundan itibaren desteklenmese de (yeni versiyon ve bug fix vs gelmeyecektir),  iDS tarafından hala yürürlüktedir. En iyisi görüntüyü Save etmek, sonra Bitmap olarak load etmektir.

4. Görüntü İşleme Kütüphanesi kullanmak

Eğer HALCON kullanıyorsanız, kamerayı direk tanıyacak ve grab_image() komutu kameradan görüntüyü alıp size verecektir.

Endüstriyel Görüntü İşlemede Yol Haritası

Son zamanlarda görüntü işleme (kameralı kontrol / optik kontrol) konusuna ilginin her geçen gün arttığını görmekteyim. Pek çok şirket sadece kendi alanında üretim yapmakla yetinmeyip, Ar-Ge faaliyetleri (ya da kişisel ilgi) kapsamında modern teknolojilere de ilgi duymakta. Pek çok firmada mühendisler kendi yazılımlarını geliştirmekte, kendi çözümlerini sunmakta ve gün geçtikçe daha çok kendi katma değerlerini yaratmaktadırlar. Ziyaret ettiğimiz pek çok firma, en modern teknolojileri içselleştirmesi ve kendi bünyesinde çözümler sunmasıyla (haklı olarak) övünmektedir. Bu kategoriye giren firmalar, hazır bir çözümü satın almak yerine, kendileri uygulamayı tercih etmektedirler. Maliyeti düşürmek, kendi alanlarına %100 uyum sağlayacak bir çözümü geliştirmek, eldeki nitelikli iş gücünü değerlendirmek gibi sebeplerden dolayı firmalar artık kendi teknolojilerini kendileri geliştirmeyi tercih ediyorlar. Firmaları bu yola iten bir diğer önemli sebep ise ülkemizde görüntü işleme / kameralı kontrol teknolojileri sunan firmaların (bir anlamda sektörel rakiplerimizin), doğrudan yabancı bir marka / ürün / yazılım entegre eden firma görünümünde olmaları. Bu distribütör / entegratör görünümündeki firmalar, sahadaki üretim yapan müşterinin gerçek gereksinimlerini algılamaktan uzak kalabiliyorlar. Masa başında çalışan bir çözüm var ellerinde ama bunu örneğin ısıl işlem ile cam üretimi yapan bir firmanın isteklerine uyarlamak kolay olmayabiliyor. Dolayısıyla müşteri tarafında güvensizlik oluşabiliyor ve sonuç olarak müşteri “bu işi sadece biz (kendi imkanlarımızla) yapabiliriz” hissiyatına kapılabiliyor. (Bizim (Mavis) açımızdan yine iyi bir durum bu. Çoğu kez müşteri, bir kaç firma denedikten sonra bu işin hiç yapılamayacağına hükmedip defteri kapatıyor. Bu da en kötü durum!)

Görüntü İşleme temelli teknolojiler de, işte bu başlığa giren en önemli öğelerden biri. Bu makalede kendi bünyesinde bu işi çözmeyi kafasına koymuş bir firma (müşteri diyelim) için bir hızlı başlangıç kılavuzu, Yol Haritası vermek istiyorum. Kendi bünyesinde, kendi imkanları ile görüntü işleme teknolojisine hakim olmak isteyen bir firma için en hızlı ve en profesyonel yöntemi açıklayacağım bir yol haritası.

1.  Yapılmaması Gerekenler : Elimdeki aletler ile ben bu işi yaparım hissi

Teknoloji geliştiren firmalar çoğu kez yazılımdan anlayan kişileri de bünyesinde barındırdığı için olsa gerek, yazılımcı kişi kendi bildiği programlama dili ile (genelde Delphi, Visual Basic, C#) görüntü işleme uygulamasını kendisi yapmaya karar veriyor. Google da bir arama yapıp, genelde bitmap operasyonları ve pixel pixel resmi okuyarak, başlıyor kod yazmaya… (Ya proje batıyor, ya çok uzun sürüyor, ya da yazılımcı arkadaş işten ayrılıyor)

Diğer bir yaklaşım, Matlab, Open CV vb. uygulamalar ile çalışan / çalıştığını iddia eden bir kaç örnek görüyor ve “evet istediğim buna benzer birşey, öyleyse ben de yaparım, ben de bu yolu izleyeyim” diyor.

Her iki yaklaşım da başarılı olamaz. (Tonla sebebi var ama burada detaya girmeyeceğim. Aksini düşünen ya da ispatlamaya çalışan varsa beni de bilgilendirsin bir zahmet.)

Bir de akıllı kamera (smart camera) ile gerçeklenmek istenen çözümler var, bu gibi durumlar için daha önce yazdığım şu makaleyi okuyabilirsiniz.

2. Elinizde olması gereken bileşenler

Gelelim düzgün bir yapay görme (görüntü işleme) uygulaması gerçekleştirmek için sahip olmanız gereken yazılım ve donanımlar bütününe.

Aydınlatma : İyi bir görüntü işleme uygulaması, kesinlikle iyi aydınlatılmış bir ortam ister. Aydınlatma koşullarının olabildiğince sabit (gece gündüz yaz kış vb. koşullardan etkilenmemesi) ve olabildiğince kontrollü olması istenir. Led ya da fluoresan tabanlı aydınlatma sistemleri kullanılabilir. Uygulamanın ihtiyacına göre en iyi aydınlatma sistemi seçilmiş olmalıdır. Fluoresan aydınlatmalar soft bir ışık verdiği için avantajlıdırlar. Led tabanlı aydınlatmalar için açma/kapama yapabilme, açısal/noktasal aydınlatma verebilme gibi avantajlara sahiptirler. Led aydınlatmalar, istenen geometrik tasarıma göre yerleştirme yapılabildiği için de kullanışlı olabilir.

Kamera – Lens : Endüstriyel bir kamera kullanılmalıdır. Yüksek hızda görüntü alabilen, tetik sinyalini görebilen (kameraya dijital sinyal verildiğinde fotoğraf çekmesi), USB ya da ethernet gibi bağlantı arabirimlerine izin veren ve en önemlisi tüm özellikleri yazılım ile yönetilebilen (güçlü bir SDK sı olan) bir kamera seçilmelidir. Lens, en az kamera kadar önemlidir. İyi bir megapixel lens ve görülmek istenen parçayı en iyi foculayabilecek odak genişliği, ayarlanabilir diyafram ve focus ayarı gibi özellikleri işinizi kolaylaştıracaktır. Unutulmamalıdır ki, iyi bir aydınlatma ve kamera ile, daha iş yazılıma gelmeden önce büyük çapta çözülebilir.

Yazılım : Güçlü bir görüntü işleme yazılımı, kütüphanesi kullanılmalıdır. Hızlı ve tutarlı çalışabilen, farklı dilleri ve platformları destekleyebilen, güncel teknolojilere uygun bir kütüphane olmalıdır. Geliştirilecek uygulama bu kütüphaneyi kullanmalıdır. Nasıl ki bir finans uygulaması verilerini SQL Server / Oracle vb. bir veritabanında tutuyorsa (ve programcıdan bir veritabanı yazması beklenmiyorsa) iyi bir görüntü işleme programı da, bu konuda geliştirilmiş ve optimize edilmiş bir kütüphane kullanmalıdır.

Giriş / Çıkış Modülü : Görüntü işleme sonuçlarının dış dünyaya bildirileceği, yine görüntü işleme işlemine başlama bilgisinin alınabileceği bir giriş çıkış modülü kullanılmalıdır.

Ve en önemlisi, bu teknolojiyi benimsemiş ve kendini bu konuda geliştirmek isteyen bir insan ve ona değer veren bir kurum gerekmektedir.

Eğer bu bileşenlere sahip olunmuşsa,  firma bünyesinde bu bileşenleri bir araya getirerek her tür görüntü işleme ihtiyacına çözüm sunabilecek altyapıyı sağlamış demektir.

Mavis olarak, en iyisi olduğuna inandığımız tüm bu bileşenlere sahibiz. Kendi projelerimizde, bu bileşenleri kullanmaktayız. Bunun bir sonucu olacak ki, çok farklı sektörlerde %100 çalışan gerçek yapay görme uygulamalarına sahibiz.

Görüntü işleme kütüphanesi olarak HALCON kullanıyoruz. HALCON var olan en hızlı ve en güçlü görüntü işleme kütüphanesidir. Daha fazla bilgi için googla da HALCON aratınız. Ya da bizimle iletişime geçip, ücretsiz deneme sürümünü elde ediniz ve aynı gün çalışmaya başlayınız) Kamera olarak Alman iDS firmasının uEye marka kameralarını kullanıyoruz. uEye, Almanya da üretilen, son derece gelişmiş bir SDK sunan, ideal bir yapay görme kamerasıdır. Lens, uygulamaya göre değişmektedir. Ölçme gerektiren bir uygulamada farklı lens, varlık kontrol eden bir uygulamada farklı lens kullanılır. Bu yüzden şu marka lensi şurada kullanırız demek yerine, projeye uygun bir lens kullanırız tabiri daha doğru olur.

Aydınlatma olarak projeye göre farklı çözümler sunmaktayız. Fluoresan aydınlatmalar üzerine yaptığımız özel geliştirmeler ile, soft ışık yakalamaktayız. Led tabanlı aydınlatma kullanan bir çok farklı modelimiz de mevcuttur.

Giriş Çıkış modülümüz, yine kendi geliştirdiğimiz modüllerdir. USB ya da Seri port üzerinden bilgisayar erişimi mümkündür. USB modeli tüm işletim sistemlerinde çalışabilen, arada hiç bir ilave sürücü yazılım ihtiyacı olmayan son derce hızlı modüllerdir. 5-24 V. arası herhangi bir işareti giriş olarak kabul edebilmekte, röle ya da tranzistör çıkışı verebilmektedir.

Mavis tüm bu bileşenleri bünyesinde barındırır (Stoklu çalışır)

Son olarak, Mavis, ihtiyaç duyulması halinde, tüm bu bileşenleri sağlamak dışında görüntü işleme eğitimi de vermektedir.

Mavis, kendi imkanları ile geliştirme yapan firmalara her tür desteği zevkle vermektedir ve kendi felsefesiyle birebir örtüşen bu tür firmalar ve kişiler ile başarılı projelere imza atmaktadır.

Diğer yandan, Mavis; anahtar teslimi olarak nitelenen sayısız çözüme sahiptir. Bu blog sayfalarında ya da web sitemizde (www.mavis.com.tr) takip edilebileceği gibi, mavis sadece görüntü işleme ile ilgilenen %100 Türk sermayeli tek firmadır ve yerli yabancı pek çok firma için %100 kontrol esasına dayanan hazır çözümler sunmaktadır.

Delphi içinden uEye Kamera Kullanımı

iDS uEye kameralar, son derece güçlü bir SDK ile birlikte gelmektedirler.  Güçlü yanlarını genel başlıklar altında toplarsak

  • 32 bit ve 64 bit işletim sistemleri için %100 destek
  • Tüm platformlar için %100 destek (Native Windows, .NET, Linux, Web)
  • ActiveX, OCX bileşenleri olarak kullanabilme
  • Native .NET kütüphanesi
  • Tüm görüntü işleme arabirimleri (HALCON, neurocheck, cognex…)
  • Birçok derlenmiş ve çalışan örnek uygulamalar

vb. sayılabilir.

.NET ortamında uygulama geliştirmek için, C# ve onun güçlü IDE si VS yi kesinlikle tavsiye ederim. Buna rağmen, Delphi ile uygulama geliştirmenin cazibesi de hala devam etmektedir. Bunları da kendime göre kısaca sıralarsam;

  • En hızlı Native Win32 uygulama
  • Delphi 1 den itibaren standartlaşmış güçlü ve oturmuş IDE
  • ObjectPascal dilinin getirdiği güç artı kolaylık
  • Birçok VCL, hazır kod, library vb. vb.
  • Açıklanamayan Delphi bağlılığı/sevgisi

Delphi 1 den Delphi 2010 versiyonuna kadar Delphi kullanmış biri olarak, laf açılmışken susmam son derece zor olduğundan, lafı burada keserek, Delphi içinden uEye kameralarının kullanımına geçiyorum.

1. Öncelikle uEye Driverları ve programları Full olarak kurulur. (www.ueyesetup.com)

2. uEye Demo programı ile kameranın düzgün olarak çalıştığı test edilir.

3. Şimdi Delphi Çalıştırılır (Resimler Delphi2009 programından alınmıştır. Delphi5 ten itibaren aynı mantık geçerli olduğundan tüm versiyonlar için burada anlatılanlar geçerli olacaktır)

ilk iş olarak, diğer tüm ActiveX bileşenlerinde olduğu gibi, uEye ActiveX bileşeni Delphi içinden yeni bir component olarak install edilir.

Bunun için Component ana menüsünden, “Import Component” menü öğesi seçilir. Gelen ekranda “Import ActiveX Control” radio button işaretlenir ve aşağıdaki ekran gelir.

Bu ekranda uEyeCam ActiveX Control bulunur ve istenilen Delphi component paletine yüklenir. (Ben Additional sekmesini seçtim. ActiveX ya da System gibi palet ler daha okunaklı görünebilir. İStediğinizi seçebilirsiniz zaten, dilerseniz yeni bir palet te oluşturabilirsiniz)

Sonraki ekranda Create New Unit” seçerek ilerledim ve nihayetinde Deplhi bana yeni ActiveX bileşenimin Additional paletine başarıyla yüklendiğini söyledi.

Artık delphi içinden kullanıma hazırım.

Normal form tasarlar gibi çalışıyorum artık. Additional paletinden uEye ActiveX bileşenini formun üzerine koydum ve istediğim gibi ölçeklendirdim.

sonrasında işime yarayacak bazı butonlar koydum. Kamera Aç, Kapat, Resmi Farklı Kaydet vb. gibi.

“Yükle” butonuna

uEyeCam1.InitCamera(0);

kodunu ekliyorum. Ve daha fazla kod yazmadan hemen F9 a basıyorum ve ta taaa… Yine Delphi hızı ve mucizesi ekranda beliriyor…

Dilersem, fotoğrafı farklı kaydetmek için;

uEyeCam1.SaveImage(”);

kodunu kullanabilirim. Parametee olarak ” kullanırsam, kaydedeceğim yeri seçmem için Save Dialog görüntülenecektir. Belirli bir yere kaydetmek istiyorsam, bunu parantez içinde belirtmem yeterlidir.

Kamera ile işim bittiğinde (Formu kapatırken vs.)

uEyeCam1.ExitCamera;

kodunu çağırmam yeterli olacaktır.

Hepsi bu kadar kolay…

uEye ActiveX bileşeninin yüzlerce fonksiyonu mevcuttur ve bunlar Help kısmında son derece detaylı açıklanmıştır. İhtiyaç duyulabilecek hemen her fonksiyon gerçek bir Alman mühendisliği inceliğiyle kodlanmıştır. Programcıya son derece kolay bir kodlama işi kalmış, geliştirilen uygulama diğer Delphi uygulamalarında olduğu gibi, “En Hızlı” ve “En Şık” olarak harddisk te yerini almıştır.

Bir tüyo : Ekranda karşınıza çıkan default iDS uEye görüntüsünden hoşlanmıyorsanız, kendi marka ve logonuzu içeren bitmap dosyayı C:\Windows\System32 klasörüne uEyeCamOcx.bmp ismiyle kaydedin 😉

Uygulama başlar başlamaz sizi bu ekran karşılayacaktır.

ini File dan Kamera Ayarları

VYP Programında, Kamera ayarlarının (pozlama sürese, çalışma frekansı, fps oranı vb…) programa bildirildiği arabirime ini File dan yükleme özelliği eklendi.

Önceki versiyonlarda, Klasör ya da Kamera şeklinde olabilen seçeneklere son olarak ini File seçeneği eklendi. Sahadaki çalışmalarda, görüntü alma işlemleri genellikle uEye kamera programlarından olan uEye Demo ile gerçekleştirilmekte, daha sonra oradaki değerler VYP programına bildirilmekteydi. Şimdi 2 işi tek bir defada yapabilmek için, uEye kamera ayarlarını direk olarak yükleme seçeneği eklendi.  Bunun en büyük avantajı IR Filter, Red Gamma Gain, Hotpixel Correction vb. tüm değişkenleri VYP içinden de ayrıca set etme zorunluluğunu ortadan kaldırması oldu. (Aksi halde Kamera üreticisinin sağladığı tüm fonksiyon seti için ayrı bir arayüz yapmak gerekecekti. Bu da neredeyse imkansız bir iş)

Son olarak, ini file yüklendikten sonra, kullanıcı isterse VYP üzerinden ayarları dilediğince değiştirebilecek. Örneğin ini file olarak yüklenen dosyada pozlama değeri 23.07 ise, kullanıcı bunu 24.01 gibi bir değere çektiğinde, tüm diğer ayarlamalar ini file dan gelmek kaydıyla, sadece pozlama değeri yeni değerine göre set edilmiş olacak.

Sonuçta uEye Demo ile alınan görüntünün birebir aynısı VYP içinden de alınmış oluyor.

ini File üzerine

ini file, en eski windows versiyonlarından beri oldukça yaygın olarak kullanılmaktaydı. Birçok program geliştirme ortamı (VB, Delphi, VS…) ini file işlemleri için API sunuyorlardı. Zamanla ini file yerini önce registry kaydına, daha sonra  özellikle .NET yaygınlaşmasıyla birlikte xml dosyalarına bırakmıştır. (Dolayısıyla VS gibi .NET tabanlı güncel IDE ler  daha az api desteği sunmaktadır)  Buna rağmen ini File, gerek eskiyle uyum, gerek basit oluşu yüzünden hala güncelliğini ve yaygınlığını korumaktadır.