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?
Trả lời
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.
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
bạn đã định hình lại mảng đích thành kích thước phù hợp chưa? – agf
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
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