तो मैं पता लगा मैं इस तरह स्केल के लिए एक छवि में बदल सकते हैं:ग्रेस्केल छवि में पिक्सल की औसत "दिशा" को कुशलतापूर्वक गणना कैसे करें?
public static Bitmap GrayScale(this Image img)
{
var bmp = new Bitmap(img.Width, img.Height);
using(var g = Graphics.FromImage(bmp))
{
var colorMatrix = new ColorMatrix(
new[]
{
new[] {.30f, .30f, .30f, 0, 0},
new[] {.59f, .59f, .59f, 0, 0},
new[] {.11f, .11f, .11f, 0, 0},
new[] {0, 0, 0, 1.0f, 0},
new[] {0, 0, 0, 0, 1.0f}
});
using(var attrs = new ImageAttributes())
{
attrs.SetColorMatrix(colorMatrix);
g.DrawImage(img, new Rectangle(0, 0, img.Width, img.Height),
0, 0, img.Width, img.Height, GraphicsUnit.Pixel, attrs);
}
}
return bmp;
}
अब, मैं गणना करने के लिए पिक्सल के औसत "दिशा" चाहते हैं।
मेरा मतलब यह है कि मैं 3x3 क्षेत्र कहना चाहता हूं, और फिर बाएं तरफ दाएं तरफ से गहरा है, तो दिशा सही होगी, अगर नीचे की तुलना में गहरा है शीर्ष, तो दिशा ऊपर की ओर होगी, अगर नीचे-बाएं ऊपर-दाएं से गहरा है, तो दिशा ऊपर-सही होगी। (हर 3x3 क्षेत्र में छोटे वेक्टर तीरों के बारे में सोचें)। शायद एक बेहतर उदाहरण यह है कि यदि आप फ़ोटोशॉप में ग्रेस्केल ढाल खींचते हैं, और आप गणना करना चाहते हैं कि उन्होंने किस कोण को खींचा है।
मैंने इस MatLab की तरह सामान किया है, लेकिन वह साल पहले था। मुझे लगता है कि मैं गणना करने के लिए ColorMatrix
के समान मैट्रिक्स का उपयोग कर सकता हूं, लेकिन मुझे पूरा यकीन नहीं है कि कैसे। ऐसा लगता है कि this function ऐसा हो सकता है जो मैं चाहता हूं; क्या मैं इसे ग्रेस्केल (ऊपर के रूप में) में परिवर्तित कर सकता हूं और फिर इन दिशाओं की गणना करने के लिए ग्रेस्केल मैट्रिक्स के साथ कुछ कर सकता हूं?
आईआईआरसी, जो मैं चाहता हूं वह edge detection के समान है।
मैं इन दिशा वैक्टरों की गणना करने के बाद, मैं बस उन पर लूप करने जा रहा हूं और छवि की औसत दिशा की गणना कर रहा हूं।
अंतिम लक्ष्य मैं छवियों को घुमाने के लिए चाहता हूं ताकि उनकी औसत दिशा हमेशा ऊपर की ओर हो; इस तरह यदि मेरे पास दो समान छवियां हैं, तो एक को घुमाया गया है (90,180 या 270 डिग्री), वे उसी तरह उन्मुख हो जाएंगे (यदि कोई व्यक्ति उल्टा हो जाता है तो मुझे कोई चिंता नहीं है)।
* कटाव * कुछ स्पैम हटाया जा रहा है। आप अपने बाकी के प्रयासों को पढ़ना चाहते हैं के संशोधन देख सकते हैं। en.wikipedia.org/wiki/Image_gradient
मुझे लगता है कि अगर आप प्रत्येक छवि टाइल निर्देशांक बनाम के सहसंबंध की गणना (जैसे 'meshgrid') आप अपने" दिशा "मिलना चाहिए। मुझे यह भी संदेह है कि टाइल दिशानिर्देशों का औसत एक ही जवाब देने जा रहा है जैसे कि आप पूरी छवि को एक टाइल के रूप में सहसंबंधित करते हैं। यदि आपके पास अभी भी MatLab है, तो मैं इसे आपके एल्गोरिदम का परीक्षण करने के लिए उपयोग करूंगा, फिर अंतिम संस्करण को सी # पर पोर्ट करूँगा। –
@BenVoigt: एक मेष्रिड क्या है? अगर मैं जानता था कि मैं पूरी तरह से छवि पर दिशा की खुशी से गणना करूंगा। मेरे पास अब Matlab की एक प्रति नहीं है ... मैंने केवल यूनी में कुछ सेमेस्टर के लिए इसका इस्तेमाल किया; मुझे यकीन नहीं है कि मुझे याद होगा कि इसका उपयोग कैसे करें। सोचने का एक अलग तरीका चाहिए। – mpen
लगता है कि आप जो चाहते हैं वह ढाल है। क्या आपने अभी तक कोशिश की है? – dranxo