Sepya tonu oluşturmak için gerekli temel işlemler nelerdir? Referans noktam perl imagemagick kütüphanesidir, bu yüzden herhangi bir temel işlemi kolayca kullanabilirim. Nicelemeyi (gri tonlamalı hale getirmeyi), renklendirmeyi ve daha sonra görüntüyü geliştirmeyi denedim, ancak hala biraz bulanık.Sepya sesi nasıl oluşturulur?
cevap
Imaginagic komut satırını kullanırsanız kolaydır.
http://www.imagemagick.org/script/convert.php
kullanımlar "-sepia ton eşiği" bağımsız değişkeni dönüştürülmesi.
Gariptir ki, PerlMagick API doğrudan bu iş için bir yöntem içerir görünmüyor:
http://www.imagemagick.org/script/perl-magick.php
... ve herhangi Sepya yöntemine hiçbir referansı.
AForge.NET kitaplığında nasıl uygulandığına bakın, C# kodu here.
temelleri
tam alrogithm kaynak kodunda, artı geri dönüşümü değiştirmek
- YIQ renk alanına dönüştürmek gibi görünüyor RGB -> YIQ ve YIQ -> RGB dönüşümleri açıklanmıştır. C# bir sepya konvertör
kod bağlantı için başka renkler kullanmak için bir seçenek var gibi görünmüyor artık çalışmıyor ... = ( –
birisi bağlantıyı güncelleyebilir mi? – codejammer
@codejammer http://bit.ly/ZP0Y3x –
Örnek kod burada cevabım mevcuttur:
outputRed = (inputRed * .393) + (inputGreen *.769) + (inputBlue * .189)
outputGreen = (inputRed * .349) + (inputGreen *.686) + (inputBlue * .168)
outputBlue = (inputRed * .272) + (inputGreen *.534) + (inputBlue * .131)
: What is wrong with this sepia tone conversion algorithm?
algoritması this page itibaren, her giriş piksel renk şu şekilde dönüşür geliyor Bu çıkış değerlerinden herhangi biri 255'ten büyükse, - 255 değerini ayarlayabilirsiniz. Bu belirli değerler, Microsoft tarafından önerilen sepya tonu değerleridir.
Muhtemelen Math.Min kullanmanız gerekecektir.Bu üç satırdan sonra 255 için kontrol yapmayı denedim ve bir hata meydana gelecektir.Programım için bir sepya tonu yapmaya çalıştığımda bugün aynı sorunla karşı karşıyaydım .. – BigBug
Ama ya cha farklı bir şey istersem Filtre nge o zaman bu değerlere nasıl ulaşabilirim? Benim sorum gibi bu değerler hakkında nasıl bilgi edindiğimiz, tekrar tekrar farklı değerler koymamız gerekecek mi? – AHF
Bu C# 'da bulunur, ancak temel kavramlar aynıdır. Bunu muhtemelen perl'e dönüştürebilirsiniz.
private void SepiaBitmap(Bitmap bmp)
{
Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
System.Drawing.Imaging.BitmapData bmpData = bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite,
System.Drawing.Imaging.PixelFormat.Format32bppRgb);
IntPtr ptr = bmpData.Scan0;
int numPixels = bmpData.Width * bmp.Height;
int numBytes = numPixels * 4;
byte[] rgbValues = new byte[numBytes];
System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, numBytes);
for (int i = 0; i < rgbValues.Length; i += 4)
{
rgbValues[i + 2] = (byte)Math.Min((.393 * red) + (.769 * green) + (.189 * (blue)), 255.0); //red
rgbValues[i + 1] = (byte)Math.Min((.349 * red) + (.686 * green) + (.168 * (blue)), 255.0); //green
rgbValues[i + 0] = (byte)Math.Min((.272 * red) + (.534 * green) + (.131 * (blue)), 255.0); //blue
if ((rgbValues[i + 2]) > 255)
{
rgbValues[i + 2] = 255;
}
if ((rgbValues[i + 1]) > 255)
{
rgbValues[i + 1] = 255;
}
if ((rgbValues[i + 0]) > 255)
{
rgbValues[i + 0] = 255;
}
}
System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, numBytes);
this.Invalidate();
bmp.UnlockBits(bmpData);
}
matematik kullanmanın amacı nedir?min ve 255 daha büyük olup olmadığını kontrol etmek için if? – AndreaBogazzi
Hesaplanan değerleri bayt aralığına sabitlemek için 'Math.Min' gereklidir. Aşağıdaki '' 'ifadeleri tamamen anlamsızdır. "rgbValues" bir "byte" dizisidir, bu nedenle değerlerinin hiçbiri> 255 olabilir. – saucecontrol
- 1. Python'da görüntünün sepya tonuna işlenmesi
- 2. Zil sesi nasıl yinelenir
- 3. apk'ye alarm sesi veya zil sesi nasıl eklenir?
- 4. Android'de bip sesi nasıl yapılır?
- 5. Sepya, RGB, GrayScale efektini UIImage uygulatarak uygulama
- 6. Kaydedilmiş sesi UWP
- 7. Bir sistem sesi,
- 8. iOS6 çoklu rota sesi
- 9. Kullanıcılara Elixir Akışı Sesi
- 10. iOS Simulator Sesi
- 11. Python openAL 3D sesi
- 12. MediaRecorder.start() tarafından "bip" sesi nasıl kapatılır?
- 13. Meteor'ın sesi ve Famo.us nasıl birlikte oynuyor?
- 14. Bir uygulamada konuşma sentezi sesi nasıl seçilir
- 15. Android emülatörüne zil sesi ekleme
- 16. Tercih zil sesi varsayılan değer
- 17. iOS'ta belirli bir sesi tanımlayın
- 18. Android Froyo ayar zil sesi
- 19. Güncelleme bildirimi titreşim/zil sesi
- 20. Sesi Bluetooth Hoparlörüne Yeniden Yönlendirin
- 21. Gelen çağrılarda zil sesi yok
- 22. Uygulamanın sesi hoparlörler üzerinden çalışmıyor
- 23. Google maps eklentisini siyah/beyaz veya sepya filtresiyle yapın
- 24. MP3 dosyasını zil sesi olarak ayarlama
- 25. Bip sesi bittikten sonra bir mesaj bırakın.
- 26. Android uygulamasında Ortam Sesi Kaydırıcıyı Etkinleştir
- 27. Devre Dışı Bırak düğmesi Android'de sesi tıklayın
- 28. Android Ses - Sinüs sesi üreteci garip davranışı
- 29. Çoklu HTML sayfalarında arka plan sesi nasıl oynatılır.
- 30. Bildirim sesi olarak ayarlamak için varsayılan iOS sesine nasıl erişebilirim?
Ben perl'de bir imagemagick nesnesi sahip olduğundan bu en doğrudan yolu değil ama işe yarayabilir ... ama etkisi – user83358