2011-08-18 37 views
8

Tôi muốn áp dụng một biến đổi Cosin rời rạc (cũng như nghịch đảo) cho một hình ảnh bằng Python và tôi tự hỏi cách tốt nhất để làm điều đó là gì và như thế nào. Tôi đã xem xét PIL và OpenCV nhưng tôi vẫn không hiểu cách sử dụng nó.Làm cách nào để áp dụng DCT cho hình ảnh bằng Python?

+0

Không chắc chắn chính xác về PIL và OpenCV, nhưng việc áp dụng cả DCT và DCT nghịch đảo về cơ bản là nhân khối nguồn với các ma trận chuyển đổi liên quan. – agibalov

Trả lời

7

Từ OpenCV:

 
DCT(src, dst, flags) → None 

    Performs a forward or inverse Discrete Cosine transform of a 1D or 2D 
    floating-point array. 

    Parameters: 

     src (CvArr) – Source array, real 1D or 2D array 
     dst (CvArr) – Destination array of the same size and same type as the source 
     flags (int) – 

     Transformation flags, a combination of the following values 
      CV_DXT_FORWARD do a forward 1D or 2D transform. 
      CV_DXT_INVERSE do an inverse 1D or 2D transform. 
      CV_DXT_ROWS do a forward or inverse transform of every individual row of 
the input matrix. This flag allows user to transform multiple vectors simultaneously 
and can be used to decrease the overhead (which is sometimes several times larger 
than the processing itself), to do 3D and higher-dimensional transforms and so forth. 

Here is an example of it being used.

DCT cũng có sẵn trong scipy.fftpack.

+0

Bạn có thể cung cấp một chương trình cơ bản để hiển thị mức sử dụng của nó không? Python dường như phàn nàn rằng mảng đích của tôi rỗng. – jmnwong

+0

bạn đã định hình lại mảng đích thành kích thước phù hợp chưa? – agf

+0

Về cơ bản những gì tôi đã làm là sử dụng PIL để thay đổi kích thước một hình ảnh đầu vào và sau đó sử dụng cv.CreateImageHeader để tạo ra nguồn cũng như một mảng đích rỗng. Không chắc chắn nếu điều này là chính xác. – jmnwong

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