2011-07-27 64 views
5

Tôi chỉ muốn hỏi xem có tài nguyên nào bạn khuyên bạn chỉ mô tả Image smoothing đơn giản không.Xử lý hình ảnh - Làm mịn

Cảm ơn.

+4

"Làm mịn hình ảnh" có thể có nghĩa là nhiều thứ.(Thông thường một bộ lọc low-pass của một số loại, nhưng đôi khi mọi người sử dụng nó để mô tả các hoạt động hoàn toàn khác nhau.) Bạn muốn làm gì? –

+5

Tôi sẽ bắt đầu với http://en.wikipedia.org/wiki/Gaussian_blur –

Trả lời

10

Giống như một số người nhận xét đã đề cập, làm mịn hình ảnh có thể có nghĩa là rất nhiều thứ. Chủ yếu là, khi ai đó sử dụng cụm từ đó, họ có nghĩa là làm mờ hoặc lọc low-pass. Chúng thường được sử dụng đồng nghĩa. Ý tưởng làm mờ là trực giác đối với chúng ta như là chúng sinh thị giác, nhưng nó thực sự có ý nghĩa gì?

Khi sử dụng ống kính máy ảnh ngoài tiêu cự, điều đó có nghĩa là các tia sáng phản xạ từ các vật thể kết hợp trong tầm nhìn của chúng ta. Đây là hình ảnh đại diện cho tập trung tầm nhìn:

enter image description here

Dưới đây là một sơ đồ tương tự đại diện mờ hoặc phi tập trung tầm nhìn: enter image description here

Để tái tạo hiệu ứng này bằng kỹ thuật số, chúng ta hãy lấy mọi pixel của một hình ảnh và thay thế nó bằng trung bình của chính nó và 8 pixel lân cận của nó và:enter image description here

Phía trên là hình ảnh của một điểm ảnh màu trắng bên trong hình vuông màu đen 7x7. Lưu ý rằng đó là một pixel màu trắng duy nhất, không phải là toàn bộ một pixel vuông, vừa bị thổi bay lên. Trong một đại diện hình ảnh 8-bit tiêu chuẩn, điều này được thể hiện như sau

 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 0 255 0 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 

Khi chúng tôi thực hiện trung bình, đó là thay thế mỗi pixel với tỷ lệ trung bình của tất cả các điểm ảnh trong một hình vuông 3x3 xung quanh nó (trong đó bao gồm các điểm ảnh gốc cũng có, chúng tôi nhận

 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 28 28 28 0 0 
0 0 28 28 28 0 0 
0 0 28 28 28 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 

số Trên đây là các số nguyên, bởi vì cho đến nay chúng tôi đã chỉ được thực hiện các hoạt động nguyên, vì vậy hãy kiên định.

Điều này có thể không giống như nhiều của một mịn cho bây giờ, nhưng chúng ta hãy xem một ví dụ khác. Dưới đây là một checke hình ảnh rboard với thay đổi giá trị 0 và 255 pixel.

enter image description here

Bây giờ hãy thay thế mỗi điểm ảnh trung bình của một hình vuông 4x4 nơi pixel gốc được định vị như vậy:

 
. . . . 
. X . . 
. . . . 
. . . . 

see bạn rằng vì mô hình bàn cờ, giá trị trung bình của mỗi ô vuông như vậy sẽ là 255/2 = 127 (phân chia số nguyên một lần nữa). Sự thay đổi pixel của bàn cờ là rất mạnh từ điểm ảnh đến điểm ảnh. Chuyển từ bất kỳ pixel nào sang hàng xóm của nó, chúng tôi chuyển từ giá trị pixel cao nhất có thể sang giá trị thấp nhất có thể. Điều này được gọi là nội dung tần số cao. Khi tính trung bình, chúng tôi xóa thành phần tần số cao này và do đó, trong lingo xử lý tín hiệu, chúng tôi đang thực hiện lọc dừng cao hoặc, đồng nghĩa, lọc qua thấp. Đừng lo lắng về các hiện vật lạ trên các cạnh. Chúng có mặt bởi vì khi lọc trên cạnh của hình ảnh, chúng tôi thiếu điểm ảnh trung bình, vì vậy chúng tôi cho rằng mọi thứ vượt quá hình ảnh chỉ là màu đen.

Chúng ta hãy thực hiện cùng một loại trung bình trên hình ảnh thang độ xám thông thường. Dưới đây là hình ảnh Lenna nổi tiếng. Bên cạnh đó là phiên bản trung bình của nó bằng cách sử dụng mặt nạ trung bình 7x7. Bạn có thể thấy rằng đó là được làm mịn hoặc mờ.

enter image description here

Đây là một ví dụ rất đơn giản về hình ảnh mịn qua trung bình. Tính trung bình chỉ là một trường hợp đặc biệt của lọc low-pass. Nói chung, chúng tôi thực hiện lấy trung bình có trọng số để đạt được hiệu ứng bộ lọc thông thấp mong muốn. Để đọc thêm, tôi đề nghị tìm kiếm lý thuyết lọc và convolution.

Tôi hy vọng điều này sẽ hữu ích.

2

Image Smoothing thường đồng nghĩa với Low Pass Filtering hoặc getting rid of the high frequencies.


Bối cảnh - những gì đang lọc:

Hầu hết mọi người hiểu những gì lọc là trực giác. Bạn lấy một cái gì đó và vượt qua nó thông qua một bộ lọc và loại bỏ một cái gì đó và đầu ra không có chất mà bạn lọc ra. Trong tín hiệu hình ảnh/2d và 1d, bạn có thể lọc.

Cách bạn triển khai lọc trên hình ảnh 2d hoặc 1d là thực hiện chuyển đổi đầu vào, x và bộ lọc, h để tạo đầu ra y.

Dưới đây là một ví dụ về chập trong 1d mà tôi đã viết trong 5 phút và không kiểm tra lỗi:

void conv(float *x, int x_len, float * h, int h_len, float * y, int y_len) 
{ 
int i; 
register double accum; 
for(i = 0; i < x_len-h_len-1; i++) { 
    accum = 0; 
    for(j = 0; j < h_len; j++) { 
    accum += x[i+j] * h[j]; 
    } 
    y[i] = accum; 
} 
} 

int main { 
float x[] = {...}; 
int x_len = sizeof(x)/sizeof(x[0]); 
float h[] = {...}; 
int h_len = sizeof(h)/sizeof(h[0]); 
float y[x_len-h_len-1] = {0}; 
int y_len = x_len-h_len-1; 

conv(x,x_len,h,h_len,y,y_len); 
} 

Thông báo như thế nào tín hiệu đầu vào x được lọc bởi h. Sau đó, đầu ra được lưu trữ trong y. Để biết thêm thông tin tìm kiếm convolution trên google.


thấp vượt qua bộ lọc:

Bây giờ bạn biết làm thế nào để lọc một tín hiệu 1d. Bạn có thể làm một bộ lọc thông thấp. Để thực hiện một bộ lọc thông thấp, bạn tạo một bộ lọc h chỉ cho phép các tần số thấp đi qua. Bộ lọc thông thấp đơn giản nhất là bộ lọc hình chữ nhật h = ones(1,N); h = h ./ N; (mã MATLAB). Một bộ lọc phức tạp hơn là một bộ lọc gaussian (bộ lọc này thường được sử dụng trong xử lý hình ảnh. Xem Photoshop/GIMP và tìm "gaussian blur"). Có nhiều cách để tạo bộ lọc thông thấp.

Để tạo bộ lọc thông thấp tùy chỉnh, hãy sử dụng Parks-McClellan_filter_design_algorithm để tạo bộ lọc thông thấp cụ thể tùy ý. Để biết thêm thông tin, hãy tìm kiếm google để "tạo bộ lọc thông thấp".


Cuối cùng để trả lời câu hỏi của bạn - Hình ảnh mịn:

Để làm ảnh mịn bạn làm điều tương tự trong 1ngày nhưng mỗi khi bạn nhìn thấy một duy nhất cho vòng lặp bạn có một đôi vòng lặp for (vì bạn đang làm tín hiệu 2d).

Tạo bộ lọc cũng tương tự nhưng thay vì có bộ lọc mảng 1d, h, bộ lọc của bạn bây giờ là hai chiều.

Các vấn đề liên quan