การประมวลผลภาพ (Image Processing) มีเครื่องมือและเทคนิคหลายอย่างที่สามารถใช้ในการวิเคราะห์และปรับปรุงภาพนอกจาก Histogram ซึ่งรวมถึงแต่ไม่จำกัดเฉพาะ:
1. Edge Detection (การตรวจจับขอบ)
- Canny Edge Detection
- Sobel Edge Detection
- Laplacian Edge Detection
2. Image Filtering (การกรองภาพ)
- Gaussian Blur
- Median Filter
- Bilateral Filter
3. Morphological Operations (การประมวลผลทางมอร์โฟโลยี)
- Dilation
- Erosion
- Opening
- Closing
4. Thresholding (การตั้งค่าเกณฑ์)
- Global Thresholding
- Adaptive Thresholding
- Otsu’s Thresholding
5. Contour Detection (การตรวจจับรูปร่าง)
- Finding Contours
- Bounding Boxes
- Convex Hull
6. Image Segmentation (การแบ่งส่วนภาพ)
- Watershed Algorithm
- GrabCut Algorithm
- K-means Clustering
7. Feature Detection and Matching (การตรวจจับและจับคู่คุณสมบัติ)
- SIFT (Scale-Invariant Feature Transform)
- SURF (Speeded-Up Robust Features)
- ORB (Oriented FAST and Rotated BRIEF)
8. Object Detection and Recognition (การตรวจจับและรู้จำวัตถุ)
- Haar Cascades
- HOG (Histogram of Oriented Gradients) + SVM
- Deep Learning-based methods (เช่น YOLO, SSD, Faster R-CNN)
9. Image Transformation (การแปลงภาพ)
- Geometric Transformations (Scaling, Rotation, Translation)
- Perspective Transformations
- Affine Transformations
10. Color Space Conversion (การแปลงสี)
- RGB to Grayscale
- RGB to HSV
- RGB to LAB
ตัวอย่างการใช้งานเครื่องมือเหล่านี้ใน C# ด้วย AForge.NET และ Emgu CV:
การใช้งาน Edge Detection ด้วย Emgu CV:
csharp
Copy code
using Emgu.CV;
using Emgu.CV.Structure;
using System.Drawing;
using System.Windows.Forms;
public partial class Form1 : Form
{
private void btnEdgeDetection_Click(object sender, EventArgs e)
{
if (currentFrame != null)
{
// Convert Bitmap to Image<Gray, byte>
Image<Gray, byte> grayImage = new Image<Gray, byte>(currentFrame);
// Apply Canny Edge Detection
var edges = grayImage.Canny(100, 200);
// Display edges
pic.Image = edges.ToBitmap();
}
}
}
การใช้งาน Gaussian Blur ด้วย AForge.NET:
csharp
Copy code
using AForge.Imaging.Filters;
public partial class Form1 : Form
{
private void btnGaussianBlur_Click(object sender, EventArgs e)
{
if (currentFrame != null)
{
// Apply Gaussian Blur
GaussianBlur filter = new GaussianBlur(4, 11);
Bitmap blurredImage = filter.Apply(currentFrame);
// Display blurred image
pic.Image = blurredImage;
}
}
}